Sayfayı Yazdır | Pencereyi Kapat

SQL HATASI

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=1079
Tarih: 12 Temmuz 2025 Saat 19:36
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: SQL HATASI
Mesajı Yazan: Muammer
Konu: SQL HATASI
Mesaj Tarihi: 11 Temmuz 2025 Saat 15:04
Aşağıdaki kod ürün ekle sayfasına ait.Bu Kodda ürün bilglierini giriyorum bilgiler grid ekranına düşüyor fakat sqle kaydedilmiyor ve uygulamayı kapatıp açınca grid ekranından da gidiyor.

var
  MyForm: TclForm;          
  MyGrid: TclStringGrid;    
  Lbl_Baslik: TClProLabel;  
  LblUyari: TClProLabel;    
  DtEdt1: TClProDateEdit;   
  Edt_StokKodu, Edt_UrunAdi, Edt_StokMiktari: TclProEdit; 
  Lbl_Tarih, Lbl_UrunAdi, Lbl_StokMiktari: TClProLabel;   
  Lbl_StokKodu: TClProLabel;
  Btn_Filtrele, Btn_TedarikciSiparisTakibi, Btn_QR, Btn_KritikUrunler, Btn_YeniUrunEkle, Btn_SatisFire: TClProButton;
  selectQuery: TClSqlQuery;
  Str_StokKodu, Str_DateEdit: String;
  NewUrunKodu, NewUrunAdi, NewStokMiktari, NewKritikSeviye, NewDepoYeriID, NewBirimFiyat: String;
  mainPnl, leftPanel, rightPanel, bottomPanel: TclProPanel;  // Declare panels
  

// Setup Grid Columns Function
void SetupGridColumns;
{
  MyGrid.Columns[0].Header = 'Ürün Kodu';
  MyGrid.Columns[1].Header = 'Ürün Adı';
  MyGrid.Columns[2].Header = 'Stok Miktarı';
  MyGrid.Columns[3].Header = 'Kritik Seviye';
  MyGrid.Columns[4].Header = 'Depo Yeri ID';
  MyGrid.Columns[5].Header = 'Birim Fiyat';
  MyGrid.Columns[6].Header = 'Tarih';
}

// Add Data to Grid
void AddDataToGrid;
{
  try
    selectQuery.SQL.Text = 'SELECT UrunKodu, UrunAdi, StokMiktari, KritikSeviye, DepoYeriID, BirimFiyat, OlusturmaTarihi FROM TBLSTOKSB';
    selectQuery.Open;
    
    if (selectQuery.Found)
    {
      MyForm.RemoveGridBinding('myLink');
      MyForm.AddNewGridBinding(MyGrid, selectQuery, 'myLink');
      SetupGridColumns;
    }
    else
    {
      ShowMessage('Kayıt bulunamadı!');
    }
  except
    ShowMessage('Hata oluştu: ' + LastExceptionMessage);
  }
}

// Button click function to add a new product
void EkleButtonClick;
{
  // Ürün bilgilerini kullanıcıdan alıyoruz
  NewUrunKodu = Edt_StokKodu.Text;
  NewUrunAdi = Edt_UrunAdi.Text;
  
  // Stok miktarını kontrol ediyoruz
  try
    NewStokMiktari = StrToInt(Edt_StokMiktari.Text);
  except
    ShowMessage('Stok miktarı geçersiz! Lütfen geçerli bir sayı girin.');
    
  }
  
  NewKritikSeviye = '0';  
  NewDepoYeriID = '1';    
  NewBirimFiyat = '0.00'; 

  // Ürün kodu ve adının boş olmadığını kontrol ediyoruz
  if ((NewUrunKodu == '') && (NewUrunAdi == '')) 
  {
    ShowMessage('Ürün kodu veya adı boş olamaz!');
  }

  // Veritabanına yeni ürünü ekliyoruz
  try
    selectQuery = TClSqlQuery.Create(nil);  
    selectQuery.Connection = Clomosy.DBSQLServerConnection;
    selectQuery.SQL.Text = 'INSERT INTO TBLSTOKSB (UrunKodu, UrunAdi, StokMiktari, KritikSeviye, DepoYeriID, BirimFiyat) VALUES (''' + NewUrunKodu + ''', ''' + NewUrunAdi + ''', ' + IntToStr(NewStokMiktari) + ', ''' + NewKritikSeviye + ''', ''' + NewDepoYeriID + ''', ''' + NewBirimFiyat + ''')';  // Correct column names    selectQuery.ExecSQL;  
    ShowMessage('Yeni ürün başarıyla eklendi!');
  except
    ShowMessage('Ürün eklenirken bir hata oluştu: ' + LastExceptionMessage);
  }

  // Veritabanına yeni eklenen ürünü ekledikten sonra, grid'e ekliyoruz
  MyGrid.RowCount = MyGrid.RowCount + 1;  
  MyGrid.Cells[0, MyGrid.RowCount - 1] = NewUrunKodu;  
  MyGrid.Cells[1, MyGrid.RowCount - 1] = NewUrunAdi;  
  MyGrid.Cells[2, MyGrid.RowCount - 1] = IntToStr(NewStokMiktari);  
  MyGrid.Cells[3, MyGrid.RowCount - 1] = NewKritikSeviye;  
  MyGrid.Cells[4, MyGrid.RowCount - 1] = NewDepoYeriID;  
  MyGrid.Cells[5, MyGrid.RowCount - 1] = NewBirimFiyat;  

  // Veriyi doğrudan grid'e eklediğimiz için Refresh kullanmamıza gerek yok
}


{
  // Form Initialization
  MyForm = TclForm.Create(Self);
  MyForm.SetFormColor('#c4c4c4', '#c4c4c4', clGVertical);

  // Form Title
  Lbl_Baslik = MyForm.AddNewProLabel(MyForm, 'Lbl_Baslik', 'Ürün Ekleme Sayfası');
  Lbl_Baslik.Align = alTop;
  Lbl_Baslik.Height = 60;
  Lbl_Baslik.Margins.Top = 30;
  Lbl_Baslik.clProSettings.FontSize = 26;
  Lbl_Baslik.clProSettings.FontColor = clAlphaColor.clHexToColor('#fc0000');
  Lbl_Baslik.clProSettings.FontVertAlign = palCenter;
  Lbl_Baslik.clProSettings.FontHorzAlign = palCenter;
  Lbl_Baslik.SetclProSettings(Lbl_Baslik.clProSettings);

  // Left Panel (For form inputs)
  leftPanel = MyForm.AddNewProPanel(MyForm, 'leftPanel');
  leftPanel.Align = alLeft;
  leftPanel.Width = 400;  // Left panel takes 1/4th of the width
  leftPanel.Margins.Top = 20;
  leftPanel.Margins.Left = 20;
  leftPanel.Margins.Right = 20;

  // Right Panel (For Grid)
  rightPanel = MyForm.AddNewProPanel(MyForm, 'rightPanel');
  rightPanel.Align = alClient;  // Right panel takes the remaining space
  rightPanel.Margins.Top = 20;
  rightPanel.Margins.Left = 20;
  rightPanel.Margins.Right = 20;

  // Bottom Panel (For displaying products from the database)
  bottomPanel = MyForm.AddNewProPanel(MyForm, 'bottomPanel');
  bottomPanel.Align = alBottom;  // Bottom panel below the inputs
  bottomPanel.Height = 150;
  bottomPanel.Margins.Top = 20;
  bottomPanel.Margins.Left = 20;
  bottomPanel.Margins.Right = 20;

  // Left Panel Widgets (Product Info)
  Lbl_StokKodu = MyForm.AddNewProLabel(leftPanel, 'Lbl_StokKodu', 'Ürün Kodu');
  Lbl_StokKodu.Align = alTop;
  Lbl_StokKodu.Height = 30;
  Lbl_StokKodu.clProSettings.FontSize = 14;
  Lbl_StokKodu.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  Lbl_StokKodu.SetclProSettings(Lbl_StokKodu.clProSettings);

  Edt_StokKodu = MyForm.AddNewProEdit(leftPanel, 'Edt_StokKodu', '' );
  Edt_StokKodu.Align = alTop;
  Edt_StokKodu.Height = 40;
  Edt_StokKodu.Width = leftPanel.Width * 70 div 100;
  Edt_StokKodu.Margins.Top = 10;
  Edt_StokKodu.SetclProSettings(Edt_StokKodu.clProSettings);

  Lbl_UrunAdi = MyForm.AddNewProLabel(leftPanel, 'Lbl_UrunAdi', 'Ürün Adı');
  Lbl_UrunAdi.Align = alTop;
  Lbl_UrunAdi.Height = 30;
  Lbl_UrunAdi.clProSettings.FontSize = 14;
  Lbl_UrunAdi.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  Lbl_UrunAdi.SetclProSettings(Lbl_UrunAdi.clProSettings);

  Edt_UrunAdi = MyForm.AddNewProEdit(leftPanel, 'Edt_UrunAdi', '' );
  Edt_UrunAdi.Align = alTop;
  Edt_UrunAdi.Height = 40;
  Edt_UrunAdi.Width = leftPanel.Width * 70 div 100;
  Edt_UrunAdi.Margins.Top = 10;
  Edt_UrunAdi.SetclProSettings(Edt_UrunAdi.clProSettings);

  Lbl_StokMiktari = MyForm.AddNewProLabel(leftPanel, 'Lbl_StokMiktari', 'Stok Miktarı');
  Lbl_StokMiktari.Align = alTop;
  Lbl_StokMiktari.Height = 30;
  Lbl_StokMiktari.clProSettings.FontSize = 14;
  Lbl_StokMiktari.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  Lbl_StokMiktari.SetclProSettings(Lbl_StokMiktari.clProSettings);

  Edt_StokMiktari = MyForm.AddNewProEdit(leftPanel, 'Edt_StokMiktari', '' );
  Edt_StokMiktari.Align = alTop;
  Edt_StokMiktari.Height = 40;
  Edt_StokMiktari.Width = leftPanel.Width * 70 div 100;
  Edt_StokMiktari.Margins.Top = 10;
  Edt_StokMiktari.SetclProSettings(Edt_StokMiktari.clProSettings);

  Lbl_Tarih = MyForm.AddNewProLabel(leftPanel, 'Lbl_Tarih', 'Tarih');
  Lbl_Tarih.Align = alTop;
  Lbl_Tarih.Height = 30;
  Lbl_Tarih.clProSettings.FontSize = 14;
  Lbl_Tarih.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  Lbl_Tarih.SetclProSettings(Lbl_Tarih.clProSettings);

  DtEdt1 = MyForm.AddNewProDateEdit(leftPanel, 'DtEdt1');
  DtEdt1.Align = alTop;
  DtEdt1.Height = 40;
  DtEdt1.Width = leftPanel.Width * 70 div 100;
  DtEdt1.Margins.Top = 10;
  DtEdt1.SetclProSettings(DtEdt1.clProSettings);

  Btn_YeniUrunEkle = MyForm.AddNewProButton(leftPanel, 'Btn_YeniUrunEkle', 'Ürün Ekle');
  Btn_YeniUrunEkle.Align = alTop;
  Btn_YeniUrunEkle.Height = 50;
  Btn_YeniUrunEkle.Width = leftPanel.Width * 70 div 100;
  Btn_YeniUrunEkle.Margins.Top = 10;
  Btn_YeniUrunEkle.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4CAF50');
  Btn_YeniUrunEkle.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_YeniUrunEkle.clProSettings.FontSize = 16;
  Btn_YeniUrunEkle.SetclProSettings(Btn_YeniUrunEkle.clProSettings);

  // Create the grid for displaying products
  MyGrid = MyForm.AddNewStringGrid(rightPanel, 'MyGrid');
  MyGrid.Align = alClient;
  MyGrid.ReadOnly = True;

  // SQL bağlantısı
  selectQuery = TClSqlQuery.Create(nil);
  Clomosy.DBSQLServerConnect('SQL Server', 'DESKTOP-E2HF8JM\SQLEXPRESS', 'sa', '1', 'StokYonetim', 1433);
  selectQuery.Connection = Clomosy.DBSQLServerConnection;

  // Verileri çek
  AddDataToGrid;
  MyForm.AddNewEvent(Btn_YeniUrunEkle,tbeOnClick,'EkleButtonClick');
  MyForm.clSetWindowState(fwsMaximized);

  MyForm.Run;
}




Cevaplar:
Mesajı Yazan: haletr
Mesaj Tarihi: 11 Temmuz 2025 Saat 17:15
Merhaba Muammer,

Öncelikle StringGrid yerine TclProGrid kullanmanı öneriyorum.

Kendi projemde veri tabanına veri eklemek için kullandığım kodları aşağıda paylaşıyorum. Veri tabanına ekledikten sonra Grid'i yenileyip bu şekilde verinin eklendiğini görüntülüyorum. Umarım yardımcı olur.

//Veri tabanına kayıt
void InsertToDatabase;
{
  
    if ((edtFisNo.Text == '') || (edtHarcamaTur.Text == '') || (edtAciklama.Text == '') || (edtTutar.Text == '') || (edtTarih.Text == '') || (edtSaat.Text==''))
    ShowMessage('Lütfen tüm alanları doldurun.');
  else 
  {
  try {
    Clomosy.DBSQLServerQuery.Sql.Text =
  'INSERT INTO Harcamalar (fis_no, harcama_turu, aciklama, tutar, tarih, saat) ' +
  'VALUES (' +
    QuotedStr(edtFisNo.Text) + ', ' +
    QuotedStr(edtHarcamaTur.Text) + ', ' +
    QuotedStr(edtAciklama.Text) + ', ' +
    edtTutar.Text + ', ' + 
    QuotedStr(edtTarih.Text) + ', ' +
    QuotedStr(edtSaat.Text) +
  ')';
    Clomosy.DBSQLServerQuery.ExecSql;
    ShowMessage('Veri ekleme başarılı');
    Temizle; //Editleri temizlemek için bir prosedür
    Yenile; //Grid'i yenilemek için bir prosedür
    
  } except {
    ShowMessage('Exception class: '+LastExceptionClassName+' Exception Message: ' +LastExceptionMessage);
   }
}
}  
}




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