Sayfayı Yazdır | Pencereyi Kapat

Kod Bloğunda Hata

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=1468
Tarih: 04 Mayıs 2026 Saat 18:58
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Kod Bloğunda Hata
Mesajı Yazan: Kaan26
Konu: Kod Bloğunda Hata
Mesaj Tarihi: 04 Mayıs 2026 Saat 15:30
Merhaba kolay gelsin projmemin amacı bir kütüphanede yardımcı olmak için kitapların arkasındaki bardodu okuyup direk verileri kendi haznesine kaydetmesi keydederken kitap adı yazar adı alış tariğhi gibi verilerinde girilmesini istiyorum fakat barkod kısmına ne kadar çok denesemde her seferinde hata alıyorum.
İlgilenirseniz sevinirimSmile.
///////////////////////////////////////////////////////////////////////////////////////////////////


var
  MyForm: TclForm;
  BookNameEdit: TclEdit;
  ScanBtn, PhotoBtn, SaveBtn: TclButton;
  BookListMemo: TclMemo;
  CameraImg: TclImage;
  QRGen: TclQRCodeGenerator;
  MyData: TclSQLite;
  Qry: TclSQLiteQuery;

// Barkod okuyucuyu çalıştırır ve sonucu Edit içine yazar
void ReadBarcode;
{
  MyForm.CallBarcodeReader(BookNameEdit);
}

// Galeriden resim seçer
void onPhotoClick;
{
  Clomosy.ImageChooser(MyForm, CameraImg);
}

// Veritabanındaki kitapları listeler (Uygulama açılışında verileri geri getirir)
void ListBooks;
{
  BookListMemo.Lines.Clear;
  Qry = MyData.clSelQuery('SELECT book_name FROM Books');
  
  if (Qry.Found)
  {
    while (not Qry.EOF)
    {
      BookListMemo.Lines.Add('- ' + Qry.FieldByName('book_name').AsString);
      Qry.Next;
    }
  }
}

// Veriyi SQLite'a kaydeder ve QR kodu oluşturur
void SaveToDatabase;
{
  if (BookNameEdit.Text <> '')
  {
    // Veriyi yerel veritabanına ekle
    MyData.clExecuteQuery('INSERT INTO Books (book_name) VALUES (''' + BookNameEdit.Text + ''')');[cite: 1]
    
    // QR Kodu dokümana uygun şekilde oluştur[cite: 1]
    QRGen.clGenerate(BookNameEdit.Text);[cite: 1]
    
    ShowMessage('Kayıt Başarılı: ' + BookNameEdit.Text);
    BookNameEdit.Text = '';
    ListBooks;
  }
}

{
  MyForm = TclForm.Create(Self);

  // --- SQLite Yapılandırması (Veri Kalıcılığı İçin) ---
  MyData = TclSQLite.Create(Self);
  MyData.DatabaseName = 'LibraryStorage';[cite: 1]
  MyData.clExecuteQuery('CREATE TABLE IF NOT EXISTS Books (book_id INTEGER PRIMARY KEY, book_name TEXT)');[cite: 1]

  BookNameEdit = MyForm.AddNewEdit(MyForm, 'BookNameEdit', 'Barkod Bekleniyor...');
  BookNameEdit.Align = alTop;

  ScanBtn = MyForm.AddNewButton(MyForm, 'ScanBtn', 'BARKOD TARAT');
  ScanBtn.Align = alTop;
  MyForm.AddNewEvent(ScanBtn, tbeOnClick, 'ReadBarcode');[cite: 1]

  PhotoBtn = MyForm.AddNewButton(MyForm, 'PhotoBtn', 'RESİM SEÇ');
  PhotoBtn.Align = alTop;
  MyForm.AddNewEvent(PhotoBtn, tbeOnClick, 'onPhotoClick');[cite: 1]

  SaveBtn = MyForm.AddNewButton(MyForm, 'SaveBtn', 'VERİTABANINA KAYDET');
  SaveBtn.Align = alTop;
  MyForm.AddNewEvent(SaveBtn, tbeOnClick, 'SaveToDatabase');[cite: 1]

  CameraImg = MyForm.AddNewImage(MyForm, 'CameraImg');
  CameraImg.Align = alTop;
  CameraImg.Height = 150;

  // QR Kod Üretici Tanımlama[cite: 1]
  QRGen = MyForm.AddNewQRCodeGenerator(MyForm, 'QRGen', 'Barkod QR');[cite: 1]
  QRGen.Align = alTop;
  QRGen.Height = 150;

  BookListMemo = MyForm.AddNewMemo(MyForm, 'BookListMemo', '');
  BookListMemo.Align = alClient;
  BookListMemo.ReadOnly = True;

  // Uygulama her açıldığında kayıtları yükle[cite: 1]
  ListBooks;[cite: 1]

  MyForm.Run;
}



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 04 Mayıs 2026 Saat 17:22
Merhaba Kaan,

Hatanın genel sebebi Barkod okutma sırasında veya kaydetme sırasında hata almanın temel sebebi Veritabanı Bağlantı yöntemidir.  https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">
Clomosy'de yerel veritabanı işlemleri için DBSQLiteConnect veya TclSQLiteQuery kullanmalısın. 

Önce güvenli bir veritabanı bağlantısı sağlayacağız, daha kapsamlı bir veritabanı tablosu ve barkod okuyucuyu doğrudan kutucuğa aktarıcaz. 
var
  MyForm: TclForm;
  EdtBarcode, EdtBookName, EdtAuthor, EdtDate: TclProEdit;
  ScanBtn, SaveBtn: TclProButton;
  BookListMemo: TclMemo;

void ReadBarcode;
{
  MyForm.CallBarcodeReader(EdtBarcode);
}

void ListBooks;
var
  Qry: TclSQLiteQuery;
{
  BookListMemo.Lines.Clear;
  
  Qry = TclSQLiteQuery.Create(Nil);
  try
    Qry.Connection = Clomosy.DBSQLiteConnection;
    Qry.Sql.Text = 'SELECT * FROM Books';
    Qry.OpenOrExecute;
    
    while (not Qry.EOF)
    {
      BookListMemo.Lines.Add('Barkod: ' + Qry.FieldByName('barcode').AsString + 
                             ' | Kitap: ' + Qry.FieldByName('book_name').AsString + 
                             ' | Yazar: ' + Qry.FieldByName('author_name').AsString);
      Qry.Next;
    }
  finally
    Qry.Free; 
  }
}

void SaveToDatabase;
var
  InsertQry: TclSQLiteQuery;
{
  if ((EdtBarcode.Text == '') || (EdtBookName.Text == ''))
  {
    ShowMessage('Lütfen en azından barkod ve kitap adı alanlarını doldurun.');
    Exit;
  }
  
  InsertQry = TclSQLiteQuery.Create(Nil);
  try
    InsertQry.Connection = Clomosy.DBSQLiteConnection;
    InsertQry.Sql.Text = 'INSERT INTO Books (barcode, book_name, author_name, purchase_date) VALUES (' + 
                         QuotedStr(EdtBarcode.Text) + ', ' + 
                         QuotedStr(EdtBookName.Text) + ', ' + 
                         QuotedStr(EdtAuthor.Text) + ', ' + 
                         QuotedStr(EdtDate.Text) + ')';
    InsertQry.OpenOrExecute;
    
    ShowMessage('Kayıt Başarılı: ' + EdtBookName.Text);
    
    EdtBarcode.Text = '';
    EdtBookName.Text = '';
    EdtAuthor.Text = '';
    EdtDate.Text = '';
    
    ListBooks;
  finally
    InsertQry.Free;
  }
}

void SetupDatabase;
{
  Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'LibraryDB.db', '');
  
  Clomosy.DBSQLiteQuery.Sql.Text = 'CREATE TABLE IF NOT EXISTS Books (book_id INTEGER PRIMARY KEY AUTOINCREMENT, barcode TEXT, book_name TEXT, author_name TEXT, purchase_date TEXT)';
  Clomosy.DBSQLiteQuery.OpenOrExecute;
}

{
  MyForm = TclForm.Create(Self);
  MyForm.SetFormColor('#F8FAFC', '', clGNone);

  SetupDatabase;

  EdtBarcode = MyForm.AddNewProEdit(MyForm, 'EdtBarcode', 'Barkod Numarası...');
  EdtBarcode.Align = alTop;
  EdtBarcode.Margins.Top = 15; EdtBarcode.Margins.Left = 15; EdtBarcode.Margins.Right = 15;
  EdtBarcode.Height = 40;

  ScanBtn = MyForm.AddNewProButton(MyForm, 'ScanBtn', 'BARKODU TARAT');
  ScanBtn.Align = alTop;
  ScanBtn.Margins.Top = 5; ScanBtn.Margins.Left = 15; ScanBtn.Margins.Right = 15;
  ScanBtn.Height = 45;
  ScanBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2563EB'); 
  ScanBtn.clProSettings.FontColor = clAlphaColor.clWhite;
  ScanBtn.clProSettings.IsRound = True; ScanBtn.clProSettings.RoundHeight = 8;
  ScanBtn.SetclProSettings(ScanBtn.clProSettings);
  MyForm.AddNewEvent(ScanBtn, tbeOnClick, 'ReadBarcode');

  EdtBookName = MyForm.AddNewProEdit(MyForm, 'EdtBookName', 'Kitap Adı...');
  EdtBookName.Align = alTop;
  EdtBookName.Margins.Top = 10; EdtBookName.Margins.Left = 15; EdtBookName.Margins.Right = 15;
  EdtBookName.Height = 40;

  EdtAuthor = MyForm.AddNewProEdit(MyForm, 'EdtAuthor', 'Yazar Adı...');
  EdtAuthor.Align = alTop;
  EdtAuthor.Margins.Top = 10; EdtAuthor.Margins.Left = 15; EdtAuthor.Margins.Right = 15;
  EdtAuthor.Height = 40;

  EdtDate = MyForm.AddNewProEdit(MyForm, 'EdtDate', 'Alış Tarihi (Örn: 04.05.2026)...');
  EdtDate.Align = alTop;
  EdtDate.Margins.Top = 10; EdtDate.Margins.Left = 15; EdtDate.Margins.Right = 15;
  EdtDate.Height = 40;

  SaveBtn = MyForm.AddNewProButton(MyForm, 'SaveBtn', 'KÜTÜPHANEYE KAYDET');
  SaveBtn.Align = alTop;
  SaveBtn.Margins.Top = 20; SaveBtn.Margins.Left = 15; SaveBtn.Margins.Right = 15;
  SaveBtn.Height = 50;
  SaveBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#10B981'); 
  SaveBtn.clProSettings.FontColor = clAlphaColor.clWhite;
  SaveBtn.clProSettings.IsRound = True; SaveBtn.clProSettings.RoundHeight = 8;
  SaveBtn.SetclProSettings(SaveBtn.clProSettings);
  MyForm.AddNewEvent(SaveBtn, tbeOnClick, 'SaveToDatabase');

  BookListMemo = MyForm.AddNewMemo(MyForm, 'BookListMemo', '');
  BookListMemo.Align = alClient;
  BookListMemo.Margins.Top = 15; BookListMemo.Margins.Bottom = 15;
  BookListMemo.Margins.Left = 15; BookListMemo.Margins.Right = 15;
  BookListMemo.ReadOnly = True;

  ListBooks;

  MyForm.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