Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 08:00
Merhaba;
Kodu kullandım ama şu hatayı verdi ne yaptıysam aşamadım ;
Kod: Tümünü seç
procedure TEmanet_Giris.EmanetBilgileriniYedekleme1Click(Sender: TObject);
begin
try
EYedek.Close;
EYedek.SQL.text:='drop table TBLEMANETYDK';
EYedek.SQL.text:='drop table TBLEMANETPARAMYDK';
EYedek.execsql;
exception
end; // BURDA HATA VERİYOR
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETYDK FROM TBLEMANET';
EYedek.execsql;
[Error] EMANETGIR.pas(157): Statement expected, but expression of type 'Class reference' found
end try dedim olmadı.
tuna
Üye
Mesajlar: 300 Kayıt: 07 Tem 2008 04:39
Konum: İstanbul
Mesaj
gönderen tuna » 06 Eki 2016 08:29
EYedek.SQL.text:='drop table TBLEMANETYDK';
EYedek.SQL.text:='drop table TBLEMANETPARAMYDK';
bu şekilde kullanmayın. aşğıdaki şekilde kullanmanız lazım.
Sql'e tek komut göndermeniz gerkiyor. Birden fazla komut göndermenin yöntemleride var ama siz önce bu probleminizi çözün.
try
EYedek.Close;
EYedek.SQL.text:='drop table TBLEMANETYDK';
EYedek.execsql;
exception
end;
try
EYedek.Close;
EYedek.SQL.text:='drop table TBLEMANETPARAMYDK';
EYedek.execsql;
exception
end;
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETYDK FROM TBLEMANET';
EYedek.execsql;
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETPARAMYDK FROM TBLEMANETPARAM';
EYedek.execsql;
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 08:31
Arkadaşlar hatayı buldum;
Exception yerine Except yazdım.
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 08:32
Şunu yapmak istedim Tabloyu bulamadım hata aldım ;
Kod: Tümünü seç
procedure TEmanet_Giris.EmanetBilgileriniYedekleme1Click(Sender: TObject);
begin
try
EYedek.Close;
EYedek.SQL.Text:='IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=BASE TABLE AND TABLE_NAME=TBLEMANETYDK)';
IF TABLE_NAME=TBLEMANETYDK Then
Application.MessageBox('Eski Yedekleme Mevcuttur. Silmek İstermisiniz ? !!!','Bilgilendirme Mesajı',MB_YesNo or MB_ICONQUESTION) of;
IDYES:
begin
EYedek.SQL.text:='drop table TBLEMANETYDK';
EYedek.SQL.text:='drop table TBLEMANETPARAMYDK';
EYedek.execsql;
except
End;
IDNO: Application.MessageBox('Eski Yedekleriniz Silinmemiştir. !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION); // hayır seçilirse ( kaydedilmesin
End;
EYedek.Open();
Else
EYedek.SQL.Add('SELECT * INTO TBLEMANETYDK FROM TBLEMANET');
EYedek.SQL.Add('SELECT * INTO TBLEMANETPARAMYDK FROM TBLEMANETPARAM');
Application.MessageBox('Eski Yedek Bulunamamıştır.Yeni Yedek Oluşturuldu !!!','Bilgilendirme Mesajı'
EYedek.Open;
EYedek.Active:=True;
end;
tuna
Üye
Mesajlar: 300 Kayıt: 07 Tem 2008 04:39
Konum: İstanbul
Mesaj
gönderen tuna » 06 Eki 2016 08:35
Pardon except yazacağıma exception yazmışım
Benim yazdığım kodda programı debug modda çalıştırdığınızda excet'e düşünce uyarı gelir ama program kırılmaz devam eder.
Programı son kullanıcı açtığında except'e düşen hatayı görmez hata yokmuş gibii devam eder.
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 08:37
Tuna kardeşim ben başlarına kontrol koymak istedim ama beceremedim yardımcı olur musun ?
tuna
Üye
Mesajlar: 300 Kayıt: 07 Tem 2008 04:39
Konum: İstanbul
Mesaj
gönderen tuna » 06 Eki 2016 08:46
//Kontrol tablo varsa siler yoksa işlem yapmaz
eyedek.close;
eyedek.sql.clear;
eyedek.sql.add('IF OBJECT_ID(''DATABASEADINIYAZ..TBLEMANETYDK '') IS NOT NULL ');
eyedek.sql.add('BEGIN ');
eyedek.sql.add('DROP TABLE TBLEMANETYDK ');
eyedek.sql.add('END');
eyedek.execsql;
//yedek alır
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETYDK FROM TBLEMANET';
EYedek.execsql;
diğer tablon içinde aynı işlemleri yap
eyedek.close;
eyedek.sql.clear;
eyedek.sql.add('IF OBJECT_ID(''DATABASEADINIYAZ..TBLEMANETPARAMYDK'') IS NOT NULL ');
eyedek.sql.add('BEGIN ');
eyedek.sql.add('DROP TABLE TBLEMANETPARAMYDK');
eyedek.sql.add('END');
eyedek.execsql;
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETPARAMYDK FROM TBLEMANETPARAM';
EYedek.execsql;
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 08:52
Tuna Kardeşim özür dilerimbenim hatam eksik yazdım. Mesaj verdirmek istedim.
Silmek istermisiniz?
dosya mevcut
yedek alındı gibi
Yardımların İçin Çok Teşekkür Ederim.
tuna
Üye
Mesajlar: 300 Kayıt: 07 Tem 2008 04:39
Konum: İstanbul
Mesaj
gönderen tuna » 06 Eki 2016 09:03
eyedek.close;
eyedek.sql.clear;
eyedek.sql.add('IF OBJECT_ID(''DATABASEADINIYAZ..TBLEMANETYDK '') IS NOT NULL ');
eyedek.sql.add('BEGIN ');
eyedek.sql.add('select ''VAR'' AS SORGU ');
eyedek.sql.add('END ');
eyedek.sql.add('ELSE ');
eyedek.sql.add('BEGIN ');
eyedek.sql.add('select ''YOK'' AS SORGU ');
eyedek.sql.add('END ');
eyedek.open;
if eyedek.fieldbyname('SORGU').asstring='VAR' THEN
BEGIN
Tablo var olduğunda yapılacak komutlar
end
else
begin
tablo yoksa yapılacak komutlar
end;
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 09:11
Ben şu şekilde bir kod düzenledim ama tabloyu bulamadığım için hata verdiği yerler oluyor;
Kod: Tümünü seç
procedure TEmanet_Giris.EmanetBilgileriniYedekleme1Click(Sender: TObject);
begin
EYedek.Close;
EYedek.SQL.Text:='IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=BASE TABLE AND TABLE_NAME=TBLEMANETYDK)';
//IF TABLE_NAME=TBLEMANETYDK Then
Case Application.MessageBox('Eski Yedekleme Mevcuttur. Silmek İstermisiniz ? !!!','Bilgilendirme Mesajı',MB_YesNo or MB_ICONQUESTION) of
IDYES:
begin
try
EYedek.Close;
EYedek.SQL.text:='drop table TBLEMANETYDK';
EYedek.execsql;
except
end;
try
EYedek.Close;
EYedek.SQL.text:='drop table TBLEMANETPARAMYDK';
EYedek.execsql;
except
End;
end;
IDNO: Application.MessageBox('Eski Yedekleriniz Silinmemiştir. !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION); // hayır seçilirse ( kaydedilmesin
end;
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETYDK FROM TBLEMANET';
EYedek.execsql;
EYedek.Close;
EYedek.SQL.text:='SELECT * INTO TBLEMANETPARAMYDK FROM TBLEMANETPARAM';
EYedek.execsql;
Application.MessageBox('Eski Yedek Bulunamamıştır.Yeni Yedek Oluşturuldu !!!','Bilgilendirme Mesajı');
end;
tuna
Üye
Mesajlar: 300 Kayıt: 07 Tem 2008 04:39
Konum: İstanbul
Mesaj
gönderen tuna » 06 Eki 2016 09:20
Benim yazdığım şekilde deneme yapabildinizmi?
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 09:24
Ben şuna takıldım ; SQL de ;
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='TBLEMANETYDK')
SELECT 'BU TABLO VERITABANINDA KAYITLIDIR.'
ELSE
SELECT 'BU TABLO VERITABANINDA KAYITLI DEGILDIR.'
bu şekilde TABLO yu buluyorumda delphi de neden bunu uyarlayamıyorum ?
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 09:26
şimdi sizin dediğinizi yapıyorum .
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 09:45
Şirket DATABASES yi şu şekilde Form1 de buluyorum ama EMANET_GIRIS e taşıyamadım ;
Var
SIRKET:String;
begin
SIRKET:=Form1.ADOConnection1.DefaultDatabase:=DATA;
ozcank
Üye
Mesajlar: 937 Kayıt: 28 Nis 2005 05:29
Mesaj
gönderen ozcank » 06 Eki 2016 09:46
Bu Form1 de ben sorguyu Emanet_Giris de çalıştırıyorum.
Kod: Tümünü seç
procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject);
Var
DATA:String;
begin
if DBLookupComboBox1.Text <>'' then
begin
DATA:=DBLookupComboBox1.Text;
ADOConnection1.Connected:=False;
memo1.Lines.LoadFromFile('c:\netsis\dataconnection.txt');
ADOConnection1.DefaultDatabase:=DATA;
ADOConnection1.Connected:=True;
Form2.StatusBar1.Panels[0].Text := 'Şirket : '+DATA;