procedure TEmanet_Giris.EmanetBilgileriniYedekleme1Click(Sender: TObject);
begin
EYedek.Close;
EYedek.SQL.Clear;
EYedek.SQL.Add('SELECT * INTO TBLEMANETYDK FROM TBLEMANET');
EYedek.SQL.Add('SELECT * INTO TBLEMANETPARAMYDK FROM TBLEMANETPARAM');
EYedek.Open;
EYedek.Active:=True;
end;
İp Ucu..:Hata ve mesaj pencerelerinde Ctrl+C yaparak pencerede gösterilen mesaj metin olarak hafızaya alınacaktır.
Tahminim, yedek olarak oluşan tablolar zaten mevcut olabilir. Eğer select .. into .. from ... yapısı ile tablo oluşturuluyorsa into ... ile oluşturulan tablonun veri tabanında olmaması gerekmektedir. Eğer böyle bir tablo varsa hata gelecektir.
Bir diğer hata sebebi ise kayıt üretmeyen sorguların Open ile çalıştırılmasıdır. select ... into .. from ... yapısındaki sorgular kayıt listesi döndürmez, bu yüzden .Open ile çalıştırılmaması lazım. Bunun yerine .ExecSQL kullanılmalı.
En son sabanakman tarafından 05 Eki 2016 02:26 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Şaban Şahin AKMAN
_________________ Derin olan kuyu değil kısa olan iptir. - .
Debuger Exception Notification
Project EMNTMENU.EXE raised exception class EOleException with message 'There is already an object named 'TBLEMANETYDK' in the database. Process stopped. Use Step or Run to contiune.
'There is already an object named 'TBLEMANETYDK' in the database.
---------------------------
Debugger Exception Notification
---------------------------
Project EMNTMENU.exe raised exception class EOleException with message 'There is already an object named 'TBLEMANETYDK' in the database'. Process stopped. Use Step or Run to continue.
---------------------------
sabanakman yazdı:...Eğer select .. into .. from ... yapısı ile tablo oluşturuluyorsa into ... ile oluşturulan tablonun veri tabanında olmaması gerekmektedir. Eğer böyle bir tablo varsa hata gelecektir....
Bunun önüne geçmek için öncelikle tabloyu drop table .... ile silmek işinize yarayabilir.
Şaban Şahin AKMAN
_________________ Derin olan kuyu değil kısa olan iptir. - .
Kontrol ettim varmış:( sildim tekrar programı çalıştırdım oluşturuyor fakat aşağıdaki hatayı alıyorum. Birde ben buna bar ekleyebilir miyim ?
"Lütfen bekleyiniz !!! Yedekleme alınıyor" şeklinde
---------------------------
Debugger Exception Notification
---------------------------
Project EMNTMENU.exe raised exception class EDatabaseError with message 'EYedek: CommandText does not return a result set'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
function copydir(von,zieldir: string): boolean;
var fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do begin
wFunc := FO_COPY;
fFlags := FOF_FILESONLY;
pFrom := PChar(von+#0);
pTo := PChar(zieldir)
end;
Result:=(0=ShFileOperation(fos)); //
end;
//
copydir('C:\TABLO',c:\YEDEKLE);
Böyle bir fonsiyon yardımı ile neden yedek almıyorsunuz
EYedek.SQL.Text:='IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=BASE TABLE AND TABLE_NAME=TBLEMANETYDK)';
EYedek.SQL.Text:='SELECT BU TABLO VERITABANINDA KAYITLIDIR.';
EYedek.SQL.Text:='ELSE';
EYedek.SQL.Text:='SELECT BU TABLO VERITABANINDA KAYITLI DEGILDIR.';
toparlayacak olursak ,
ben TBLEMANET ve TBLEMANETPARAM Tablolarını TBLEMANETYDK ve TBLEMANETPARAMYDK olarak yedeklemek istiyorum.
ve sonrasında ,
eğer tekrar son yedek almak isterse üzerine veya DROP ile silerek yeniden yedek Tablolarını oluşturmak istiyorum.
aldığım hataları belirttim bir türlü başaramadım bana yardımcı olur musunuz?