![]() |
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. |
Sql bağlantı hatası |
Yanıt Yaz ![]() |
Yazar | |
Muammer ![]() Yeni Üye ![]() ![]() Kayıt Tarihi: 24 Haziran 2025 Konum: Konya/meram Durum: Aktif Değil Puanlar: 6 |
![]() ![]() ![]() ![]() ![]() Gönderim Zamanı: 11 Temmuz 2025 Saat 15:13 |
Aşağıdaki kod satış ve fire işlemleri sayfasının kodu.Bu kodda satış ve fire işlemi yaptığım zaman hafızaya kaydettiğim 100 üründen işlem yapıyor.Sql ile bağlantı sağlayamadığım için bunu yapmak zorunda kaldım.Bu koddaki tanımlanan sabit 100 ürün yerine sqldeki ürünleri çekmeye çalışıyorum fakat sürekli hata alıyoru.
Amacım Sqlde tablodaki üründen satış yapıldığında düşmesi. var MyForm: TclForm; MyGrid: TclStringGrid; Lbl_Baslik: TClProLabel; LblUyari: TClProLabel; DtEdt1: TClProDateEdit; Edt_SatisMiktari, Edt_FireMiktari, Edt_UrunKodu: TclProEdit; Lbl_SatisMiktari, Lbl_FireMiktari, Lbl_UrunKodu: TClProLabel; Btn_Satis, Btn_Fire: TClProButton; // Satış ve Fire butonları UrunKodu: String; selectQuery: TClSqlQuery; SatisMiktari, FireMiktari: Integer; mevcutStok, yeniStok: Integer; yeterliStok: Boolean; mainPnl, leftPanel, rightPanel: 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'; } // Satis Button Click Event void SatisButtonClick; { // Kullanıcının girdiği satış miktarını alıyoruz SatisMiktari = StrToInt(Edt_SatisMiktari.Text); // Satış miktarını alıyoruz UrunKodu = Edt_UrunKodu.Text; // Ürün kodunu alıyoruz // Mevcut stok miktarını kontrol ediyoruz (simülasyon, burada sadece örnek olarak 100 adet mevcut stok kabul ediliyor) mevcutStok = 100; // Örnek olarak mevcut stok 100 kabul ediliyor // Yeterli stok olup olmadığını kontrol ediyoruz yeterliStok = mevcutStok >= SatisMiktari; // Yeterli stok varsa satışı yapıyoruz if (yeterliStok == True) { yeniStok = mevcutStok - SatisMiktari; // Satışı başarılı bir şekilde gerçekleştirdiğimizi göstermek için ShowMessage('Satış işlemi başarıyla tamamlandı! Yeni stok miktarı: ' + IntToStr(yeniStok)); } else { ShowMessage('Yetersiz stok. Satış işlemi gerçekleştirilemedi.'); } } // Fire Button Click Event void FireButtonClick; { // Kullanıcının girdiği fire miktarını alıyoruz FireMiktari = StrToInt(Edt_FireMiktari.Text); // Fire miktarını alıyoruz UrunKodu = Edt_UrunKodu.Text; // Ürün kodunu alıyoruz // Mevcut stok miktarını kontrol ediyoruz (simülasyon, burada sadece örnek olarak 100 adet mevcut stok kabul ediliyor) mevcutStok = 100; // Örnek olarak mevcut stok 100 kabul ediliyor // Yeterli stok olup olmadığını kontrol ediyoruz yeterliStok = mevcutStok >= FireMiktari; // Yeterli stok varsa fire işlemi yapıyoruz if (yeterliStok == True) { yeniStok = mevcutStok - FireMiktari; // Fire işlemi başarılı bir şekilde gerçekleştirildiğini göstermek için ShowMessage('Fire işlemi başarıyla tamamlandı! Yeni stok miktarı: ' + IntToStr(yeniStok)); } else { ShowMessage('Yetersiz stok. Fire işlemi gerçekleştirilemedi.'); } } void AddDataToGrid; { try selectQuery.SQL.Text = 'SELECT UrunKodu, UrunAdi, StokMiktari, KritikSeviye, DepoYeriID, BirimFiyat, OlusturmaTarihi FROM TBLSTOKSB'; selectQuery.Open; if (selectQuery.Found == True) // Burada == kullanıyoruz { MyForm.RemoveGridBinding('myLink'); MyForm.AddNewGridBinding(MyGrid, selectQuery, 'myLink'); SetupGridColumns; } else { ShowMessage('Kayıt bulunamadı!'); } except ShowMessage('Hata oluştu: ' + LastExceptionMessage); } } { // Form Initialization MyForm = TclForm.Create(Self); MyForm.SetFormColor('#c4c4c4', '#c4c4c4', clGVertical); // Form Title Lbl_Baslik = MyForm.AddNewProLabel(MyForm, 'Lbl_Baslik', 'Satış ve Fire İşlemleri'); 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); // Create main panel to split left and right panels mainPnl = MyForm.AddNewProPanel(MyForm, 'mainPnl'); mainPnl.Align = alClient; // Use full client area mainPnl.Margins.Left = 10; mainPnl.Margins.Right = 10; mainPnl.Margins.Top = 10; mainPnl.Margins.Bottom = 10; // Left Panel (For inputs) leftPanel = MyForm.AddNewProPanel(mainPnl, 'leftPanel'); leftPanel.Align = alLeft; leftPanel.Width = mainPnl.Width div 2; // Half width for left panel leftPanel.Margins.Top = 20; leftPanel.Margins.Left = 20; leftPanel.Margins.Right = 20; // Right Panel (For Grid) rightPanel = MyForm.AddNewProPanel(mainPnl, 'rightPanel'); rightPanel.Align = alClient; // Takes remaining space rightPanel.Margins.Top = 20; rightPanel.Margins.Left = 20; rightPanel.Margins.Right = 20; // Left Panel Widgets (For Sales and Fire) Lbl_UrunKodu = MyForm.AddNewProLabel(leftPanel, 'Lbl_UrunKodu', 'Ürün Kodu'); Lbl_UrunKodu.Align = alTop; Lbl_UrunKodu.Height = 30; Lbl_UrunKodu.clProSettings.FontSize = 14; Lbl_UrunKodu.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000'); Lbl_UrunKodu.SetclProSettings(Lbl_UrunKodu.clProSettings); Edt_UrunKodu = MyForm.AddNewProEdit(leftPanel, 'Edt_UrunKodu', ''); Edt_UrunKodu.Align = alTop; Edt_UrunKodu.Height = 40; Edt_UrunKodu.Width = leftPanel.Width * 70 div 100; Edt_UrunKodu.Margins.Top = 10; Edt_UrunKodu.SetclProSettings(Edt_UrunKodu.clProSettings); Lbl_SatisMiktari = MyForm.AddNewProLabel(leftPanel, 'Lbl_SatisMiktari', 'Satış Miktarı'); Lbl_SatisMiktari.Align = alTop; Lbl_SatisMiktari.Height = 30; Lbl_SatisMiktari.clProSettings.FontSize = 14; Lbl_SatisMiktari.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000'); Lbl_SatisMiktari.SetclProSettings(Lbl_SatisMiktari.clProSettings); Edt_SatisMiktari = MyForm.AddNewProEdit(leftPanel, 'Edt_SatisMiktari', ''); Edt_SatisMiktari.Align = alTop; Edt_SatisMiktari.Height = 40; Edt_SatisMiktari.Width = leftPanel.Width * 70 div 100; Edt_SatisMiktari.Margins.Top = 10; Edt_SatisMiktari.SetclProSettings(Edt_SatisMiktari.clProSettings); Btn_Satis = MyForm.AddNewProButton(leftPanel, 'Btn_Satis', 'Satış Yap'); Btn_Satis.Align = alTop; Btn_Satis.Height = 50; Btn_Satis.Width = leftPanel.Width * 70 div 100; Btn_Satis.Margins.Top = 10; Btn_Satis.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FF5733'); Btn_Satis.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff'); Btn_Satis.clProSettings.FontSize = 16; Btn_Satis.SetclProSettings(Btn_Satis.clProSettings); Lbl_FireMiktari = MyForm.AddNewProLabel(leftPanel, 'Lbl_FireMiktari', 'Fire Miktarı'); Lbl_FireMiktari.Align = alTop; Lbl_FireMiktari.Height = 30; Lbl_FireMiktari.clProSettings.FontSize = 14; Lbl_FireMiktari.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000'); Lbl_FireMiktari.SetclProSettings(Lbl_FireMiktari.clProSettings); Edt_FireMiktari = MyForm.AddNewProEdit(leftPanel, 'Edt_FireMiktari', ''); Edt_FireMiktari.Align = alTop; Edt_FireMiktari.Height = 40; Edt_FireMiktari.Width = leftPanel.Width * 70 div 100; Edt_FireMiktari.Margins.Top = 10; Edt_FireMiktari.SetclProSettings(Edt_FireMiktari.clProSettings); Btn_Fire = MyForm.AddNewProButton(leftPanel, 'Btn_Fire', 'Fire İşlemi Yap'); Btn_Fire.Align = alTop; Btn_Fire.Height = 50; Btn_Fire.Width = leftPanel.Width * 70 div 100; Btn_Fire.Margins.Top = 10; Btn_Fire.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FFC107'); Btn_Fire.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff'); Btn_Fire.clProSettings.FontSize = 16; Btn_Fire.SetclProSettings(Btn_Fire.clProSettings); // Right Panel: 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; // Butonlara tıklama olaylarını bağlıyoruz MyForm.AddNewEvent(Btn_Satis, tbeOnClick, 'SatisButtonClick'); MyForm.AddNewEvent(Btn_Fire, tbeOnClick, 'FireButtonClick'); AddDataToGrid; MyForm.clSetWindowState(fwsMaximized); MyForm.Run; } |
|
![]() |
|
Sudesigirci ![]() Deneyimli Üye ![]() Kayıt Tarihi: 24 Haziran 2025 Konum: KONYA Durum: Aktif Değil Puanlar: 53 |
![]() Yanıt Yaz
Alıntı Sudesigirci
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
![]() ![]() ![]() ![]() |
Merhaba Muammer , sqlden veri çekmek için bir fonksiyon paylaşıyorum umarım sana faydası dokunur
function GetMevcutStok(kod: String): Integer; var stokQuery: TClSqlQuery; { stokQuery = TClSqlQuery.Create(nil); stokQuery.Connection = Clomosy.DBSQLServerConnection; stokQuery.SQL.Text = 'SELECT StokMiktari FROM TBLSTOKSB WHERE UrunKodu = ' + QuotedStr(kod); stokQuery.Open; while( not stokQuery.Eof ){ Result = stokQuery.FieldByName('StokMiktari').AsInteger; } else { ShowMessage('Ürün bulunamadı!'); Result = -1; } stokQuery.Free; } |
|
![]() |
Yanıt Yaz ![]() |
|
Tweet |
Forum Atla | Forum İzinleri ![]() Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |