![]() |
| 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. |
DB hatası |
Yanıt Yaz
|
| Yazar | |
smeye
Yeni Üye
Kayıt Tarihi: 23 Haziran 2026 Durum: Aktif Değil Puanlar: 9 |
Mesaj Seçenekleri
Teşekkürler(0)
Alıntı Cevapla
Konu: DB hatasıGönderim Zamanı: 1 saat 60 Dakika Önce Saat 15:48 |
|
var DBFile : String; dbQuery : TClSQLiteQuery; totalIncome : Double; totalExpense : Double; balanceCard : TclProPanel; incomeCard : TclProPanel; expenseCard : TclProPanel; lblBalance : TclProLabel; lblIncome : TclProLabel; lblExpense : TclProLabel; balanceLbl : TclProLabel; incomeLbl : TclProLabel; expenseLbl : TclProLabel; loginPanel : TclProPanel; dashboardPanel : TclProPanel; lblLogin : TclProLabel; edtUser : TclProEdit; edtPassword : TclProEdit; btnLogin : TclProButton; loadQuery : TCLJSONQuery; clomosyQ1: TCLJSONQuery; listData: TclStringList; SecilenTur: String; Form1: TclForm; lblBaslik: TclLabel; lblType: TclLabel; btnIncome: TclProButton; btnExpense: TclProButton; lblAmount: TclLabel; edtAmount: TclProEdit; lblDescription: TclLabel; edtDescription: TclProEdit; lblDate: TclLabel; dateEdit: TclProDateEdit; btnSave: TclProButton; lblLast: TclLabel; listView: TclProListView; void UpdateDashboard; var Qry : TClSQLiteQuery; typeStr : String; amountStr : String; { try totalIncome = 0; totalExpense = 0; Qry = Clomosy.DBSQLiteQueryWith('SELECT Transaction_Type, Amount FROM TBLTRANSACTIONS'); Qry.OpenOrExecute; Qry.First; while(not Qry.EOF) { typeStr = Qry.FieldByName('Transaction_Type').AsString; amountStr = Qry.FieldByName('Amount').AsString; if(typeStr == 'Gelir') { totalIncome = totalIncome + StrToFloat(amountStr); } if(typeStr == 'Gider') { totalExpense = totalExpense + StrToFloat(amountStr); } Qry.Next; } lblIncome.Text = '🟢 Gelir: ' + FloatToStr(totalIncome) + ' TL'; lblExpense.Text = '🔴 Gider: ' + FloatToStr(totalExpense) + ' TL'; lblBalance.Text = '💰 Bakiye: ' + FloatToStr(totalIncome-totalExpense) + ' TL'; except ShowMessage('Dashboard Hatası: '+LastExceptionMessage); } } void btnIncomeClick; { SecilenTur = 'Gelir'; ShowMessage('İşlem Türü: Gelir'); } void btnExpenseClick; { SecilenTur = 'Gider'; ShowMessage('İşlem Türü: Gider'); } void CreateDatabase; { try DBFile = Clomosy.AppFilesPath + 'FINTRACK2.db3'; Clomosy.DBSQLiteConnect(DBFile,''); Clomosy.DBSQLiteQuery.Sql.Text = 'CREATE TABLE IF NOT EXISTS TBLTRANSACTIONS( TransactionID INTEGER PRIMARY KEY, Transaction_Type TEXT, Amount REAL, Description TEXT, Transaction_Date TEXT )'; Clomosy.DBSQLiteQuery.OpenOrExecute; except ShowMessage('DB Hatası: '+LastExceptionMessage); } } void btnLoginClick; { loginPanel.Visible = False; dashboardPanel.Visible = True; } void LoadTransactions; var loadQuery : TCLJSONQuery; { try loadQuery = Clomosy.DBCloudSQLSelectWith( 'SELECT Transaction_Type, Amount, Description FROM ftTransactions' ); if(loadQuery.Found) { listView.clLoadProListViewDataFromDataset(loadQuery); } except ShowMessage( 'Listeleme hata: '+LastExceptionMessage ); } } void btnSaveClick; { if(SecilenTur == '') { ShowMessage('Önce Gelir veya Gider seçiniz.'); Exit; } if(edtAmount.Text == '') { ShowMessage('Lütfen tutar giriniz.'); Exit; } try dbQuery = Clomosy.DBSQLiteQueryWith( 'INSERT INTO TBLTRANSACTIONS '+ '(Transaction_Type,Transaction_Date,Description,Amount) VALUES ('+ QuotedStr(SecilenTur)+','+ QuotedStr(dateEdit.DateStr)+','+ QuotedStr(edtDescription.Text)+','+ edtAmount.Text+');' ); dbQuery.OpenOrExecute; ShowMessage('Kayıt başarıyla eklendi.'); edtAmount.Text = ''; edtDescription.Text = ''; SecilenTur = ''; except ShowMessage('Kayıt Hatası: '+LastExceptionMessage); } } { Form1 = TclForm.Create(Self); loginPanel = Form1.AddNewProPanel(Form1,'loginPanel'); loginPanel.Align = alClient; dashboardPanel = Form1.AddNewProPanel(Form1,'dashboardPanel'); dashboardPanel.Align = alClient; balanceCard = Form1.AddNewProPanel(dashboardPanel,'balanceCard'); balanceCard.Align = alTop; balanceCard.Height = 80; balanceCard.Margins.Top = 10; balanceCard.Margins.Left = 10; balanceCard.Margins.Right = 10; lblBalance = Form1.AddNewProLabel(balanceCard,'lblBalance','💰 Bakiye: 0 TL'); lblBalance.Align = alCenter; lblBalance.clProSettings.FontSize = 22; lblBalance.SetclProSettings(lblBalance.clProSettings); incomeCard = Form1.AddNewProPanel(dashboardPanel,'incomeCard'); incomeCard.Align = alTop; incomeCard.Height = 60; incomeCard.Margins.Left = 10; incomeCard.Margins.Right = 10; lblIncome = Form1.AddNewProLabel(incomeCard,'lblIncome','🟢 Gelir: 0 TL'); lblIncome.Align = alCenter; lblIncome.clProSettings.FontSize = 18; lblIncome.SetclProSettings(lblIncome.clProSettings); expenseCard = Form1.AddNewProPanel(dashboardPanel,'expenseCard'); expenseCard.Align = alTop; expenseCard.Height = 60; expenseCard.Margins.Left = 10; expenseCard.Margins.Right = 10; lblExpense = Form1.AddNewProLabel(expenseCard,'lblExpense','🔴 Gider: 0 TL'); lblExpense.Align = alCenter; lblExpense.clProSettings.FontSize = 18; lblExpense.SetclProSettings(lblExpense.clProSettings); lblLogin = Form1.AddNewProLabel(loginPanel,'lblLogin','💰 FINTRACK'); lblLogin.Align = alTop; lblLogin.Height = 90; lblLogin.Margins.Top = 45; lblLogin.clProSettings.FontSize = 30; lblLogin.clProSettings.FontHorzAlign = palCenter; lblLogin.clProSettings.TextSettings.Font.Style = [fsBold]; lblLogin.SetclProSettings(lblLogin.clProSettings); edtUser = Form1.AddNewProEdit(loginPanel,'edtUser','Kullanıcı Adı'); edtUser.Align = alTop; edtUser.Height = 55; edtUser.Margins.Left = 35; edtUser.Margins.Right = 35; edtUser.Margins.Top = 35; edtPassword = Form1.AddNewProEdit(loginPanel,'edtPassword','Şifre'); edtPassword.Align = alTop; edtPassword.Height = 55; edtPassword.Margins.Left = 35; edtPassword.Margins.Right = 35; edtPassword.Margins.Top = 15; edtPassword.Password = True; btnLogin = Form1.AddNewProButton(loginPanel,'btnLogin','GİRİŞ YAP'); btnLogin.Align = alTop; btnLogin.Height = 55; btnLogin.Margins.Left = 35; btnLogin.Margins.Right = 35; btnLogin.Margins.Top = 25; btnLogin.clProSettings.FontSize = 17; btnLogin.clProSettings.TextSettings.Font.Style = [fsBold]; btnLogin.SetclProSettings(btnLogin.clProSettings); Form1.AddNewEvent(btnLogin,tbeOnClick,'btnLoginClick'); lblBaslik = Form1.AddNewLabel(dashboardPanel, 'lblBaslik', 'Gelir - Gider Takip'); lblBaslik.Align = alTop; lblBaslik.Height = 50; lblBaslik.StyledSettings = ssFamily; lblBaslik.TextSettings.Font.Size = 22; lblType = Form1.AddNewLabel(dashboardPanel, 'lblType', 'Islem Turu'); lblType.Align = alTop; lblType.Height = 30; btnIncome = Form1.AddNewProButton(dashboardPanel,'btnIncome','Gelir'); btnIncome.Align = alTop; btnIncome.Height = 45; Form1.AddNewEvent(btnIncome, tbeOnClick, 'btnIncomeClick'); btnExpense = Form1.AddNewProButton(dashboardPanel, 'btnExpense', 'Gider'); btnExpense.Align = alTop; btnExpense.Height = 45; Form1.AddNewEvent(btnExpense, tbeOnClick, 'btnExpenseClick'); lblAmount = Form1.AddNewLabel(dashboardPanel, 'lblAmount', 'Tutar'); lblAmount.Align = alTop; lblAmount.Height = 25; edtAmount = Form1.AddNewProEdit(dashboardPanel,'edtAmount','Tutar Giriniz'); edtAmount.Align = alTop; edtAmount.Height = 45; edtAmount.clTypeOfField = taFloat; lblDescription = Form1.AddNewLabel(dashboardPanel, 'lblDescription', 'Aciklama'); lblDescription.Align = alTop; lblDescription.Height = 25; edtDescription = Form1.AddNewProEdit(dashboardPanel,'edtDescription','Açıklama Giriniz'); edtDescription.Align = alTop; edtDescription.Height = 45; lblDate = Form1.AddNewLabel(dashboardPanel, 'lblDate', 'Tarih'); lblDate.Align = alTop; lblDate.Height = 25; dateEdit = Form1.AddNewProDateEdit(dashboardPanel,'dateEdit'); dateEdit.Align = alTop; dateEdit.Height = 45; btnSave = Form1.AddNewProButton(dashboardPanel,'btnSave','Kaydet'); btnSave.Align = alTop; btnSave.Height = 50; Form1.AddNewEvent(btnSave, tbeOnClick, 'btnSaveClick'); lblLast = Form1.AddNewLabel(dashboardPanel, 'lblLast', 'Son Islemler'); lblLast.Align = alTop; lblLast.Height = 30; listView = Form1.AddNewProListView(dashboardPanel,'listView'); listView.Align = alClient; listView.clProSettings.ViewType = lvList; listView.SetclProSettings(listView.clProSettings); loginPanel.Visible = True; dashboardPanel.Visible = False; CreateDatabase; Form1.Run; } DB Hatası: [FireDAC][Phys][SQLite] ERROR: database is locked |
|
![]() |
|
ErenTotan
Yeni Üye
Kayıt Tarihi: 29 Haziran 2026 Konum: Konya Durum: Aktif Değil Puanlar: 11 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı ErenTotan
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Teşekkürler(0)
Alıntı Cevapla
Gönderim Zamanı: 1 saat 40 Dakika Önce Saat 16:08 |
|
İyi çalışmalar dilerim;Öncelikle gözüme çarpan hata genel olarak sorguları(query) çağırdıktan sonra close atmamış olduğunu gördüm. genel olarak başka sorun göremediğim için kodların düzeltilmiş versiyonunu paylaşıyorum kolay gelsin,Bazı yerleri ai tavsiyesi üzerine eklediğim için sorun çıkarsa veya çalışırsa geri dönüş yaparsan sevinirim . var
DBFile : String; dbQuery : TClSQLiteQuery; totalIncome : Double; totalExpense : Double; balanceCard : TclProPanel; incomeCard : TclProPanel; expenseCard : TclProPanel; lblBalance : TclProLabel; lblIncome : TclProLabel; lblExpense : TclProLabel; loginPanel : TclProPanel; dashboardPanel : TclProPanel; lblLogin : TclProLabel; edtUser : TclProEdit; edtPassword : TclProEdit; btnLogin : TclProButton; loadQuery : TClSQLiteQuery; // DÜZELTİLDİ: TCLJSONQuery yerine yerel SQLite //kullanıyoruz bu kısın yapay zeka önerisi çalışmazsa geri dönüş yaparsan sevinirim listData: TclStringList; SecilenTur: String; Form1: TclForm; lblBaslik: TclLabel; lblType: TclLabel; btnIncome: TclProButton; btnExpense: TclProButton; lblAmount: TclLabel; edtAmount: TclProEdit; lblDescription: TclLabel; edtDescription: TclProEdit; lblDate: TclLabel; dateEdit: TclProDateEdit; btnSave: TclProButton; lblLast: TclLabel; listView: TclProListView; void CreateDatabase; { try DBFile = Clomosy.AppFilesPath + 'FINTRACK2.db3'; Clomosy.DBSQLiteConnect(DBFile,''); Clomosy.DBSQLiteQuery.Sql.Text = 'CREATE TABLE IF NOT EXISTS TBLTRANSACTIONS( TransactionID INTEGER PRIMARY KEY, Transaction_Type TEXT, Amount REAL, Description TEXT, Transaction_Date TEXT )'; Clomosy.DBSQLiteQuery.OpenOrExecute; Clomosy.DBSQLiteQuery.Close; // Tablo oluşturduktan sonra kilit kaldırıldı (.Close) except ShowMessage('DB Hatası: '+LastExceptionMessage); } } void UpdateDashboard; var Qry : TClSQLiteQuery; typeStr : String; amountStr : String; { try totalIncome = 0; totalExpense = 0; Qry = Clomosy.DBSQLiteQueryWith('SELECT Transaction_Type, Amount FROM TBLTRANSACTIONS'); Qry.OpenOrExecute; Qry.First; while(not Qry.EOF) { typeStr = Qry.FieldByName('Transaction_Type').AsString; amountStr = Qry.FieldByName('Amount').AsString; if(typeStr == 'Gelir') { totalIncome = totalIncome + StrToFloat(amountStr); } if(typeStr == 'Gider') { totalExpense = totalExpense + StrToFloat(amountStr); } Qry.Next; } Qry.Close; // Okuma işlemi bittikten sonra kilit kaldırıldı tekrardan .Close unutmuşsun lblIncome.Text = '🟢 Gelir: ' + FloatToStr(totalIncome) + ' TL'; lblExpense.Text = '🔴 Gider: ' + FloatToStr(totalExpense) + ' TL'; lblBalance.Text = '💰 Bakiye: ' + FloatToStr(totalIncome-totalExpense) + ' TL'; except ShowMessage('Dashboard Hatası: '+LastExceptionMessage); } } void LoadTransactions; { try // Bulut (Cloud) yerine oluşturduğumuz yerel SQLite tablosundan veri çekiyoruz // dediğim gibi bu kısım ai önerisi geri dönüş sağlarsan sevinirim loadQuery = Clomosy.DBSQLiteQueryWith('SELECT Transaction_Type, Amount, Description FROM TBLTRANSACTIONS'); loadQuery.OpenOrExecute; if(loadQuery.Found) { listView.clLoadProListViewDataFromDataset(loadQuery); } loadQuery.Close; // Listeleme bitince kilit kaldırıldı .Close tekrardan except ShowMessage('Listeleme hata: '+LastExceptionMessage); } } void btnIncomeClick; { SecilenTur = 'Gelir'; ShowMessage('İşlem Türü: Gelir'); } void btnExpenseClick; { SecilenTur = 'Gider'; ShowMessage('İşlem Türü: Gider'); } void btnSaveClick; { if(SecilenTur == '') { ShowMessage('Önce Gelir veya Gider seçiniz.'); Exit; } if(edtAmount.Text == '') { ShowMessage('Lütfen tutar giriniz.'); Exit; } try dbQuery = Clomosy.DBSQLiteQueryWith( 'INSERT INTO TBLTRANSACTIONS '+ '(Transaction_Type,Transaction_Date,Description,Amount) VALUES ('+ QuotedStr(SecilenTur)+','+ QuotedStr(dateEdit.DateStr)+','+ QuotedStr(edtDescription.Text)+','+ edtAmount.Text+');' ); dbQuery.OpenOrExecute; dbQuery.Close; // Kayıt eklendikten sonra kilit kaldırıldı .Close ShowMessage('Kayıt başarıyla eklendi.'); edtAmount.Text = ''; edtDescription.Text = ''; SecilenTur = ''; // EKLENDİ: Kayıt başarıyla eklendikten sonra paneli ve listeyi anında güncelle UpdateDashboard; LoadTransactions; except ShowMessage('Kayıt Hatası: '+LastExceptionMessage); } } void btnLoginClick; { loginPanel.Visible = False; dashboardPanel.Visible = True; // EKLENDİ: Giriş yapıldığında dashboard verilerini ve listeyi yükle UpdateDashboard; LoadTransactions; } { Form1 = TclForm.Create(Self); loginPanel = Form1.AddNewProPanel(Form1,'loginPanel'); loginPanel.Align = alClient; dashboardPanel = Form1.AddNewProPanel(Form1,'dashboardPanel'); dashboardPanel.Align = alClient; balanceCard = Form1.AddNewProPanel(dashboardPanel,'balanceCard'); balanceCard.Align = alTop; balanceCard.Height = 80; balanceCard.Margins.Top = 10; balanceCard.Margins.Left = 10; balanceCard.Margins.Right = 10; lblBalance = Form1.AddNewProLabel(balanceCard,'lblBalance','💰 Bakiye: 0 TL'); lblBalance.Align = alCenter; lblBalance.clProSettings.FontSize = 22; lblBalance.SetclProSettings(lblBalance.clProSettings); incomeCard = Form1.AddNewProPanel(dashboardPanel,'incomeCard'); incomeCard.Align = alTop; incomeCard.Height = 60; incomeCard.Margins.Left = 10; incomeCard.Margins.Right = 10; lblIncome = Form1.AddNewProLabel(incomeCard,'lblIncome','🟢 Gelir: 0 TL'); lblIncome.Align = alCenter; lblIncome.clProSettings.FontSize = 18; lblIncome.SetclProSettings(lblIncome.clProSettings); expenseCard = Form1.AddNewProPanel(dashboardPanel,'expenseCard'); expenseCard.Align = alTop; expenseCard.Height = 60; expenseCard.Margins.Left = 10; expenseCard.Margins.Right = 10; lblExpense = Form1.AddNewProLabel(expenseCard,'lblExpense','🔴 Gider: 0 TL'); lblExpense.Align = alCenter; lblExpense.clProSettings.FontSize = 18; lblExpense.SetclProSettings(lblExpense.clProSettings); lblLogin = Form1.AddNewProLabel(loginPanel,'lblLogin','💰 FINTRACK'); lblLogin.Align = alTop; lblLogin.Height = 90; lblLogin.Margins.Top = 45; lblLogin.clProSettings.FontSize = 30; lblLogin.clProSettings.FontHorzAlign = palCenter; lblLogin.clProSettings.TextSettings.Font.Style = [fsBold]; lblLogin.SetclProSettings(lblLogin.clProSettings); edtUser = Form1.AddNewProEdit(loginPanel,'edtUser','Kullanıcı Adı'); edtUser.Align = alTop; edtUser.Height = 55; edtUser.Margins.Left = 35; edtUser.Margins.Right = 35; edtUser.Margins.Top = 35; edtPassword = Form1.AddNewProEdit(loginPanel,'edtPassword','Şifre'); edtPassword.Align = alTop; edtPassword.Height = 55; edtPassword.Margins.Left = 35; edtPassword.Margins.Right = 35; edtPassword.Margins.Top = 15; edtPassword.Password = True; btnLogin = Form1.AddNewProButton(loginPanel,'btnLogin','GİRİŞ YAP'); btnLogin.Align = alTop; btnLogin.Height = 55; btnLogin.Margins.Left = 35; btnLogin.Margins.Right = 35; btnLogin.Margins.Top = 25; btnLogin.clProSettings.FontSize = 17; btnLogin.clProSettings.TextSettings.Font.Style = [fsBold]; btnLogin.SetclProSettings(btnLogin.clProSettings); Form1.AddNewEvent(btnLogin,tbeOnClick,'btnLoginClick'); lblBaslik = Form1.AddNewLabel(dashboardPanel, 'lblBaslik', 'Gelir - Gider Takip'); lblBaslik.Align = alTop; lblBaslik.Height = 50; lblBaslik.StyledSettings = ssFamily; lblBaslik.TextSettings.Font.Size = 22; lblType = Form1.AddNewLabel(dashboardPanel, 'lblType', 'Islem Turu'); lblType.Align = alTop; lblType.Height = 30; btnIncome = Form1.AddNewProButton(dashboardPanel,'btnIncome','Gelir'); btnIncome.Align = alTop; btnIncome.Height = 45; Form1.AddNewEvent(btnIncome, tbeOnClick, 'btnIncomeClick'); btnExpense = Form1.AddNewProButton(dashboardPanel, 'btnExpense', 'Gider'); btnExpense.Align = alTop; btnExpense.Height = 45; Form1.AddNewEvent(btnExpense, tbeOnClick, 'btnExpenseClick'); lblAmount = Form1.AddNewLabel(dashboardPanel, 'lblAmount', 'Tutar'); lblAmount.Align = alTop; lblAmount.Height = 25; edtAmount = Form1.AddNewProEdit(dashboardPanel,'edtAmount','Tutar Giriniz'); edtAmount.Align = alTop; edtAmount.Height = 45; edtAmount.clTypeOfField = taFloat; lblDescription = Form1.AddNewLabel(dashboardPanel, 'lblDescription', 'Aciklama'); lblDescription.Align = alTop; lblDescription.Height = 25; edtDescription = Form1.AddNewProEdit(dashboardPanel,'edtDescription','Açıklama Giriniz'); edtDescription.Align = alTop; edtDescription.Height = 45; lblDate = Form1.AddNewLabel(dashboardPanel, 'lblDate', 'Tarih'); lblDate.Align = alTop; lblDate.Height = 25; dateEdit = Form1.AddNewProDateEdit(dashboardPanel,'dateEdit'); dateEdit.Align = alTop; dateEdit.Height = 45; btnSave = Form1.AddNewProButton(dashboardPanel,'btnSave','Kaydet'); btnSave.Align = alTop; btnSave.Height = 50; Form1.AddNewEvent(btnSave, tbeOnClick, 'btnSaveClick'); lblLast = Form1.AddNewLabel(dashboardPanel, 'lblLast', 'Son Islemler'); lblLast.Align = alTop; lblLast.Height = 30; listView = Form1.AddNewProListView(dashboardPanel,'listView'); listView.Align = alClient; listView.clProSettings.ViewType = lvList; listView.SetclProSettings(listView.clProSettings); // Başlangıç Ayarları loginPanel.Visible = True; dashboardPanel.Visible = False; CreateDatabase; Form1.Run; } umarım çözebilmişimdir.
|
|
![]() |
|
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 |