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