Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - veri tabanı  bağlayamıyorum
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

veri tabanı bağlayamıyorum

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
ela göçel Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 05 Ağustos 2025
Durum: Aktif Değil
Puanlar: 8
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı ela göçel Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: veri tabanı bağlayamıyorum
    Gönderim Zamanı: 5 Saat 6 Dakika Önce Saat 16:41
kodlarım aşağıdaki şekilde ve RUNTIME ERROR
File library anasayfa: Unit kaloriForminstance: Syntax error.
Source position: 16,25 when evaluating instruction CallProc
(SFFFFFFFF, $1, SAC3728,5134734D0, RunUnit ).
Stack content is: [Null, Integer: 525653400,Null, Null...].
Source position: 22,40
Position: 22, 40. HATASI ALIYORUM NE YAPMAM GEREKİYOR                                          
var
  kaloriFormInstance: TCLForm;
  mainLayout: TCLLayout;
  titleLabel: TCLLabel;
  dataListView: TCLListView;
  refreshButton: TCLProButton;
  addPanel: TCLProPanel;
  yemekAdiEdit: TCLProEdit;
  kaloriEdit: TCLProEdit;
  ekleButton: TCLProButton;
  SQLiteDB: TCLSQLiteConnection;
  Query: TCLSQLiteQuery;
  dbPath: string;


void InitializeDatabase()
{
  dbPath = Clomosy.AppFilesPath + 'kalori.db';
  
  SQLiteDB = kaloriFormInstance.AddNewSQLiteConnection(kaloriFormInstance, 'SQLiteDB');
  SQLiteDB.DatabaseName = dbPath;
  
  try
  {
    SQLiteDB.Connect();
    
    Query = kaloriFormInstance.AddNewSQLiteQuery(kaloriFormInstance, 'Query');
    Query.Connection = SQLiteDB;
    
    Query.Sql.Text = 'CREATE TABLE IF NOT EXISTS yemekler (id INTEGER PRIMARY KEY AUTOINCREMENT, yemek_adi TEXT NOT NULL, kalori INTEGER NOT NULL)';
    Query.ExecSQL();
    Query.Close();
  }
  catch
  {
    kaloriFormInstance.ShowMessage('Veritabanı bağlantı hatası!');
  }
}


void LoadDataToList()
{
  var listItem: TCLListViewItem;

  try
  {
    dataListView.Items.Clear();
    
    Query.Sql.Text = 'SELECT id, yemek_adi, kalori FROM yemekler ORDER BY yemek_adi';
    Query.Open();
    
    while not Query.Eof
    {
      listItem = dataListView.Items.Add();
      listItem.Text = Query.FieldByName('yemek_adi').AsString;
      listItem.Detail = Query.FieldByName('kalori').AsString + ' kcal';
      listItem.TagString = Query.FieldByName('id').AsString;
      Query.Next();
    }
    
    Query.Close();
  }
  catch
  {
    kaloriFormInstance.ShowMessage('Veri yükleme hatası!');
  }
}


void RefreshButtonClick()
{
  LoadDataToList();
}


void EkleButtonClick()
{
  if (yemekAdiEdit.Text != '') and (kaloriEdit.Text != '')
  {
    try
    {
      Query.Sql.Text = 'INSERT INTO yemekler (yemek_adi, kalori) VALUES ("' + yemekAdiEdit.Text + '", ' + kaloriEdit.Text + ')';
      Query.ExecSQL();
      Query.Close();
      
      yemekAdiEdit.Text = '';
      kaloriEdit.Text = '';
      LoadDataToList();
      kaloriFormInstance.ShowMessage('Yemek başarıyla eklendi!');
    }
    catch
    {
      kaloriFormInstance.ShowMessage('Ekleme hatası! Kalori değerinin bir sayı olduğundan emin olun.');
    }
  }
  else
  {
    kaloriFormInstance.ShowMessage('Lütfen tüm alanları doldurun!');
  }
}

{
  kaloriFormInstance = TCLForm.Create(Self);
  kaloriFormInstance.SetFormColor('#cce6d6', '#678e76', clGVertical);AngryAngry
  InitializeDatabase;
  LoadDataToList;

  kaloriFormInstance.Run;
}
Yukarı Dön
cerenn Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 18 Haziran 2025
Durum: Aktif Değil
Puanlar: 60
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (1) Teşekkürler(1)   Alıntı cerenn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 4 Saat 26 Dakika Önce Saat 17:21
Merhaba Eda 
Öncelikle kodunda bazı hatalar mevcut
Fonksiyonları eğer parametresizse ()olmadan kullanıyoruz örneğin

void InitializeDatabase() değilde void InitializeDatabase; 

şeklinde kullanman lazım tüm fonksiyonlarını buna çevirirsen hatalardan biri düzelicektir.

Ayrıca showmessageları
'kaloriFormInstance.ShowMessage('Ekleme hatası! Kalori değerinin bir sayı olduğundan emin olun.');' şeklinde değilde direkt 'ShowMessage('Ekleme hatası! Kalori değerinin bir sayı olduğundan emin olun.');'  şeklinde kullanman gerekiyor

if (yemekAdiEdit.Text != '') and (kaloriEdit.Text != '')  kullanımı doğru değil and kullanmıyoruz && şeklinde gösteriyoruz ve yine != şeklinde bir kullanım yok <> şeklinde kullanman gerekiyor yani if ((yemekAdiEdit.Text <> '') &&(kaloriEdit.Text <> '')) doğrusu bu şekilde.
clomosyde try-catch yok try-except ya da try-finally var senin kodun için except kullanmak uygun. 
try
    {
      Query.Sql.Text = 'INSERT INTO yemekler (yemek_adi, kalori) VALUES ("' + yemekAdiEdit.Text + '", ' + kaloriEdit.Text + ')';
      Query.ExecSQL();
      Query.Close();
      
      yemekAdiEdit.Text = '';
      kaloriEdit.Text = '';
      LoadDataToList();
      kaloriFormInstance.ShowMessage('Yemek başarıyla eklendi!');
    }
    except
    {
      ShowMessage('Ekleme hatası! Kalori değerinin bir sayı olduğundan emin olun.');
    }
}
şeklinde olmalı fazladan en sona bir '}' atıyoruz kural böyle.

Bunun haricinde sqllitede ExecSQL() diye bir ifade yok bunu sqlserverda kullanıyoruz.sqllite için
chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://clomosy.com/docs/ClomosyKitapV2.pdf
218.sayfa 14.7.2. Local (Yerel) Veri Tabanı Bağlantıları inceleyebilirsin.Syntax hatalarını düzelttikten ve kitaba baktıktan sonra aldığın bir hata olursa ve paylaşırsan tekrar yardımcı olabilirim.
İyi çalışmalar.
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,031 Saniyede Yüklendi.