Sayfayı Yazdır | Pencereyi Kapat

SQLite hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1107
Tarih: 18 Temmuz 2025 Saat 21:37
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: SQLite hatası
Mesajı Yazan: Rmeysa
Konu: SQLite hatası
Mesaj Tarihi: 18 Temmuz 2025 Saat 15:38
Merhaba, veritabanı bağlantısı kurmaya çalışıyorum hata alıyorum. Nerede hata yapıyorum?
var
  yemekEkle: TclForm;
  Qry: TclSQLiteQuery;
  ymkAdi, kcal: TClProEdit;
  ogunsecimi: TCLComboBox;
  eklebtn: TClProButton;
  notelbl: TClProLabel;
  noteMemo: TCLMemo;
  lblToplam: TClProLabel;
  bugun: TCLDateTime;
  toplamKalori: Integer;
  yemek, kalori, ogun, satir: String;
  girilenDeger, i: Integer;
  database, password: String;
  
void TabloyuOlustur;
{
  database = Clomosy.AppFilesPath + 'ClomosyDatabase.db3';
  password = '';
  try {
    Clomosy.DBSQLiteConnect(database, password);
    Clomosy.DBSQLiteQuery.Sql.Text = 'CREATE TABLE IF NOT EXISTS YemekKayitlari ('+
      'id INTEGER PRIMARY KEY AUTOINCREMENT,'+
      'yemekAdi TEXT,'+
      'kalori INTEGER,'+
      'ogun TEXT,'+
      'tarih TEXT)';
    Clomosy.DBSQLiteQuery.OpenOrExecute;
  } except {
    ShowMessage('Tablo oluşturulurken hata oluştu: ' + LastExceptionMessage);
  }
}

void BtnOnClick;
{
  yemek = ymkAdi.Text;
  kalori = kcal.Text;
  ogun = ogunsecimi.Text;

  if (yemek == '')
  {
    ShowMessage('Yemek adı boş olamaz.');
    exit;
  }

  if (kalori == '')
  {
    ShowMessage('Kalori miktarı boş olamaz.');
    exit;
  }

  if (ogun == 'ÖĞÜN SEÇİNİZ')
  {
    ShowMessage('Lütfen bir öğün seçin.');
    exit;
  }


  try
  {
    girilenDeger = StrToInt(kalori);
  }
  except
  {
    ShowMessage('Lütfen geçerli bir kalori değeri girin!');
    exit;
  }

  // Tarih ata
  bugun = Date;

  // Satırı oluştur ve yaz
  satir = '[' + ogun + '] ' + yemek + ' - ' + IntToStr(girilenDeger) + ' kcal (' + DateToStr(bugun) + ')';
  noteMemo.Lines.Add(satir);

  // Kalori güncelle
  toplamKalori = toplamKalori + girilenDeger;
  lblToplam.Text = 'Toplam: ' + IntToStr(toplamKalori) + ' kcal';

 // Veritabanına kaydet
  try {
    Clomosy.DBSQLiteConnect(database, password);
    Clomosy.DBSQLiteQuery.Sql.Text = 
      'INSERT INTO YemekKayitlari (yemekAdi, kalori, ogun, tarih) VALUES (' +
      '''' + yemek + ''',' + kalori + ',' + '''' + ogun + ''',' + '''' + DateToStr(bugun) + ''')';
    Clomosy.DBSQLiteQuery.OpenOrExecute;
  } except {
    ShowMessage('Veri eklenemedi: ' + LastExceptionMessage);
    exit;
  }
  // Alanları temizle
  ymkAdi.Text = '';
  kcal.Text = '';
  ogunsecimi.ItemIndex = 0;

  ShowMessage('Yemek başarıyla eklendi!');
}



{
  yemekEkle = TclForm.Create(Self);
  Qry = TclSQLiteQuery.Create(nil);
  
  database=Clomosy.AppFilesPath+'ClomosyDatabase.db3';
  password='';

   ogunsecimi = yemekEkle.AddNewComboBox(yemekEkle,'ogunsecimi');
   ogunsecimi.Align = alTop;
   ogunsecimi.Height = 80;
   ogunsecimi.Margins.Top=10;
   
   ogunsecimi.AddItem('ÖĞÜN SEÇİNİZ','');
   ogunsecimi.AddItem('SABAH','');
   ogunsecimi.AddItem('İLK ARA ÖĞÜN','');
   ogunsecimi.AddItem('ÖĞLE','');
   ogunsecimi.AddItem('ARA ÖĞÜN','');
   ogunsecimi.AddItem('AKŞAM','');
   
   ymkAdi = yemekEkle.AddNewProEdit(yemekEkle,'ymkAdi','YEMEK ADI');
   ymkAdi.Align = alTop;
   ymkAdi.Width = 250;
   ymkAdi.Height = 60;
   ymkAdi.margins.top=10;
   ymkAdi.clProSettings.BorderColor = clAlphaColor.clHexToColor('#90EE90');
   ymkAdi.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
   ymkAdi.clProSettings.RoundHeight = 15;
   ymkAdi.clProSettings.RoundWidth = 15;
   ymkAdi.clProSettings.BorderWidth = 3;
   ymkAdi.clProSettings.FontSize = 12;
   ymkAdi.clProSettings.FontVertAlign = palcenter;
   ymkAdi.clProSettings.FontHorzAlign = palCenter;
   ymkAdi.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];
   ymkAdi.clProSettings.IsFill = True; 
   ymkAdi.clProSettings.IsRound = True;
   ymkAdi.SetclProSettings(ymkAdi.clProSettings);
   
   kcal = yemekEkle.AddNewProEdit(yemekEkle,'kcal','KALORİ MİKTARI');
   kcal.Align = alTop;
   kcal.Width = 250;
   kcal.Height = 60;
   kcal.margins.top=10;
   kcal.clProSettings.BorderColor = clAlphaColor.clHexToColor('#90EE90');
   kcal.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
   kcal.clProSettings.RoundHeight = 15;
   kcal.clProSettings.RoundWidth = 15;
   kcal.clProSettings.BorderWidth = 3;
   kcal.clProSettings.FontSize = 12;
   kcal.clProSettings.FontVertAlign = palcenter;
   kcal.clProSettings.FontHorzAlign = palCenter;
   kcal.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];
   kcal.clProSettings.IsFill = True; 
   kcal.clProSettings.IsRound = True;
   kcal.SetclProSettings(kcal.clProSettings);
   
   eklebtn = yemekEkle.AddNewProButton(yemekEkle,'eklebtn','');
   eklebtn.Align = alTop;
   eklebtn.Width = 150;
   eklebtn.Height = 70;
   eklebtn.Margins.Top=10;
   eklebtn.clProSettings.FontColor = clAlphaColor.clDarkorchid;
   eklebtn.clProSettings.FontSize = 12;
   eklebtn.clProSettings.FontVertAlign = palcenter;
   eklebtn.clProSettings.FontHorzAlign = palCenter;
   eklebtn.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];
   eklebtn.clProSettings.IsFill = True; 
   eklebtn.clProSettings.PictureSource = ' https://resmim.net/cdn/2025/07/03/TnoYXI.png" rel="nofollow - https://resmim.net/cdn/2025/07/03/TnoYXI.png ';
   eklebtn.SetclProSettings(eklebtn.clProSettings);
   yemekEkle.AddNewEvent(eklebtn, tbeOnClick, 'BtnOnClick');
   
   notelbl = yemekEkle.AddNewProLabel(yemekEkle,'notelbl','BUGÜN TÜKETİLEN YEMEKLER');
   notelbl.Align = alBottom;
   notelbl.Width = 150;
   notelbl.Height = 20;
   notelbl.Margins.Left = 10;
   notelbl.Margins.Bottom = 20;
   notelbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#00FA9A');
   notelbl.clProSettings.FontSize = 15;
   notelbl.clProSettings.FontVertAlign = palcenter;
   notelbl.clProSettings.FontHorzAlign = palLeading;
   notelbl.clProSettings.TextSettings.Font.Style = [fsBold];
   notelbl.SetclProSettings(notelbl.clProSettings);
   
   noteMemo = yemekEkle.AddNewMemo(yemekEkle,'noteMemo','');
   noteMemo.Align = alBottom;
   noteMemo.Height = 200;
   noteMemo.Width = 250;
   noteMemo.Margins.Left= 10;
   noteMemo.Margins.Right= 10; 
   noteMemo.Margins.Bottom= 50;
   noteMemo.ReadOnly = true;
   noteMemo.TextSettings.WordWrap = True;
 
   TabloyuOlustur;
   yemekEkle.Run;
}



Cevaplar:
Mesajı Yazan: Mahmutdmr
Mesaj Tarihi: 18 Temmuz 2025 Saat 16:22

Merhaba Rumeysa,
Öncelikle bazı syntax hataların var. Clomosy’de try ve except komutlarında {} kullanılmaz. Sadece except kullandıktan sonra } ile blok kapatılır ve kod bloğu aktif hale gelir.

Bir diğer sorun ise, prosedürlerin sonuna ; konulmaz.

Umarım yardımcı olabilmişimdir.


bir de  düzenlediğim kodu dener misin çalışacak mı ?


var

  yemekEkle: TclForm;

  Qry: TclSQLiteQuery;

  ymkAdi, kcal: TClProEdit;

  ogunsecimi: TCLComboBox;

  eklebtn: TClProButton;

  notelbl: TClProLabel;

  noteMemo: TCLMemo;

  lblToplam: TClProLabel;

  bugun: TCLDateTime;

  toplamKalori: Integer;

  yemek, kalori, ogun, satir: String;

  girilenDeger, i: Integer;

  database, password: String;

  

void TabloyuOlustur

{

  database = Clomosy.AppFilesPath + 'ClomosyDatabase.db3';

  password = '';

  try 

    Clomosy.DBSQLiteConnect(database, password);

    Clomosy.DBSQLiteQuery.Sql.Text = 'CREATE TABLE IF NOT EXISTS YemekKayitlari ('+

      'id INTEGER PRIMARY KEY AUTOINCREMENT,'+

      'yemekAdi TEXT,'+

      'kalori INTEGER,'+

      'ogun TEXT,'+

      'tarih TEXT)';

    Clomosy.DBSQLiteQuery.OpenOrExecute;

   except 

    ShowMessage('Tablo oluşturulurken hata oluştu: ' + LastExceptionMessage);

  }

}


void BtnOnClick

{

  yemek = ymkAdi.Text;

  kalori = kcal.Text;

  ogun = ogunsecimi.Text;


  if (yemek == '')

  {

    ShowMessage('Yemek adı boş olamaz.');

    exit;

  }


  if (kalori == '')

  {

    ShowMessage('Kalori miktarı boş olamaz.');

    exit;

  }


  if (ogun == 'ÖĞÜN SEÇİNİZ')

  {

    ShowMessage('Lütfen bir öğün seçin.');

    exit;

  }



  try

    girilenDeger = StrToInt(kalori);

  except

  

    ShowMessage('Lütfen geçerli bir kalori değeri girin!');

    exit;

  }


  // Tarih ata

  bugun = Date;


  // Satırı oluştur ve yaz

  satir = '[' + ogun + '] ' + yemek + ' - ' + IntToStr(girilenDeger) + ' kcal (' + DateToStr(bugun) + ')';

  noteMemo.Lines.Add(satir);


  // Kalori güncelle

  toplamKalori = toplamKalori + girilenDeger;

  lblToplam.Text = 'Toplam: ' + IntToStr(toplamKalori) + ' kcal';


 // Veritabanına kaydet

  try 

    Clomosy.DBSQLiteConnect(database, password);

    Clomosy.DBSQLiteQuery.Sql.Text = 

      'INSERT INTO YemekKayitlari (yemekAdi, kalori, ogun, tarih) VALUES (' +

      '''' + yemek + ''',' + kalori + ',' + '''' + ogun + ''',' + '''' + DateToStr(bugun) + ''')';

    Clomosy.DBSQLiteQuery.OpenOrExecute;

   except 

    ShowMessage('Veri eklenemedi: ' + LastExceptionMessage);

    exit;

  }

  // Alanları temizle

  ymkAdi.Text = '';

  kcal.Text = '';

  ogunsecimi.ItemIndex = 0;


  ShowMessage('Yemek başarıyla eklendi!');

}




{

  yemekEkle = TclForm.Create(Self);

  Qry = TclSQLiteQuery.Create(nil);

  

  database=Clomosy.AppFilesPath+'ClomosyDatabase.db3';

  password='';


   ogunsecimi = yemekEkle.AddNewComboBox(yemekEkle,'ogunsecimi');

   ogunsecimi.Align = alTop;

   ogunsecimi.Height = 80;

   ogunsecimi.Margins.Top=10;

   

   ogunsecimi.AddItem('ÖĞÜN SEÇİNİZ','');

   ogunsecimi.AddItem('SABAH','');

   ogunsecimi.AddItem('İLK ARA ÖĞÜN','');

   ogunsecimi.AddItem('ÖĞLE','');

   ogunsecimi.AddItem('ARA ÖĞÜN','');

   ogunsecimi.AddItem('AKŞAM','');

   

   ymkAdi = yemekEkle.AddNewProEdit(yemekEkle,'ymkAdi','YEMEK ADI');

   ymkAdi.Align = alTop;

   ymkAdi.Width = 250;

   ymkAdi.Height = 60;

   ymkAdi.margins.top=10;

   ymkAdi.clProSettings.BorderColor = clAlphaColor.clHexToColor('#90EE90');

   ymkAdi.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');

   ymkAdi.clProSettings.RoundHeight = 15;

   ymkAdi.clProSettings.RoundWidth = 15;

   ymkAdi.clProSettings.BorderWidth = 3;

   ymkAdi.clProSettings.FontSize = 12;

   ymkAdi.clProSettings.FontVertAlign = palcenter;

   ymkAdi.clProSettings.FontHorzAlign = palCenter;

   ymkAdi.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];

   ymkAdi.clProSettings.IsFill = True; 

   ymkAdi.clProSettings.IsRound = True;

   ymkAdi.SetclProSettings(ymkAdi.clProSettings);

   

   kcal = yemekEkle.AddNewProEdit(yemekEkle,'kcal','KALORİ MİKTARI');

   kcal.Align = alTop;

   kcal.Width = 250;

   kcal.Height = 60;

   kcal.margins.top=10;

   kcal.clProSettings.BorderColor = clAlphaColor.clHexToColor('#90EE90');

   kcal.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');

   kcal.clProSettings.RoundHeight = 15;

   kcal.clProSettings.RoundWidth = 15;

   kcal.clProSettings.BorderWidth = 3;

   kcal.clProSettings.FontSize = 12;

   kcal.clProSettings.FontVertAlign = palcenter;

   kcal.clProSettings.FontHorzAlign = palCenter;

   kcal.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];

   kcal.clProSettings.IsFill = True; 

   kcal.clProSettings.IsRound = True;

   kcal.SetclProSettings(kcal.clProSettings);

   

   eklebtn = yemekEkle.AddNewProButton(yemekEkle,'eklebtn','');

   eklebtn.Align = alTop;

   eklebtn.Width = 150;

   eklebtn.Height = 70;

   eklebtn.Margins.Top=10;

   eklebtn.clProSettings.FontColor = clAlphaColor.clDarkorchid;

   eklebtn.clProSettings.FontSize = 12;

   eklebtn.clProSettings.FontVertAlign = palcenter;

   eklebtn.clProSettings.FontHorzAlign = palCenter;

   eklebtn.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];

   eklebtn.clProSettings.IsFill = True; 

   eklebtn.clProSettings.PictureSource = ' https://resmim.net/cdn/2025/07/03/TnoYXI.png" rel="nofollow - https://resmim.net/cdn/2025/07/03/TnoYXI.png ';

   eklebtn.SetclProSettings(eklebtn.clProSettings);

   yemekEkle.AddNewEvent(eklebtn, tbeOnClick, 'BtnOnClick');

   

   notelbl = yemekEkle.AddNewProLabel(yemekEkle,'notelbl','BUGÜN TÜKETİLEN YEMEKLER');

   notelbl.Align = alBottom;

   notelbl.Width = 150;

   notelbl.Height = 20;

   notelbl.Margins.Left = 10;

   notelbl.Margins.Bottom = 20;

   notelbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#00FA9A');

   notelbl.clProSettings.FontSize = 15;

   notelbl.clProSettings.FontVertAlign = palcenter;

   notelbl.clProSettings.FontHorzAlign = palLeading;

   notelbl.clProSettings.TextSettings.Font.Style = [fsBold];

   notelbl.SetclProSettings(notelbl.clProSettings);

   

   noteMemo = yemekEkle.AddNewMemo(yemekEkle,'noteMemo','');

   noteMemo.Align = alBottom;

   noteMemo.Height = 200;

   noteMemo.Width = 250;

   noteMemo.Margins.Left= 10;

   noteMemo.Margins.Right= 10; 

   noteMemo.Margins.Bottom= 50;

   noteMemo.ReadOnly = true;

   noteMemo.TextSettings.WordWrap = True;

 

   TabloyuOlustur;

   yemekEkle.Run;

}






Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net