FireBird vt. de Script halindeki SQL cümleciğini çalıştırma
-
- Üye
- Mesajlar: 136
- Kayıt: 18 Oca 2005 05:24
- Konum: İzmir
FireBird vt. de Script halindeki SQL cümleciğini çalıştırma
SQL Serverde bir kaç tablonun create cümleciğini bir text dosyadan okutup tek queryde çalıştırabiliyordum. Ama FireBird te bunu beceremedim sql cümleciğini çalıştırmaya kalktığın anda ikici tablo nun create cümleciğinin başladığı yerde hata veriyor. Acaba FireBirdde bunu nasıl yapabilirim
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
Sanırım biraz daha açıklayacı olmanız lazım çünkü hiçbir kod görünmüyor bunun için önce SQL server ile nasıl yaptınız firebird'te nasıl yapmak istiyorsunuz ve bunun akabinde aldığınız hatanın tamamını yazman gerekiyor. Birde tamam emin olmamkla beraber sanırım ihtiyacınız olan komut SET TERM komutu olmalı biraz araştırma yaparsınız forumda muhakkak izlerine rastlarsınız.
-
- Üye
- Mesajlar: 136
- Kayıt: 18 Oca 2005 05:24
- Konum: İzmir
Yapmaya çalıştığım şöyle birşey
gibi cümleleri tek bir text file içine kaydetmek ve Query nin
query1.LoadFromFile(c:\test.txt) özelliği ile yükleyip
ExecSQL ile çalıştırmak. FireBird te bunu nasıl yaparım.
Mustafa hocam bu IB Script component'ini nereden bulabilirim. acaba Delphi 7 kullanıyorum ama bu component'i bulamadım
Kod: Tümünü seç
Create Table Caribilgi(....
....
....
....
....
)
Create carihareket(..........
....
....
....
....
....
....
)
query1.LoadFromFile(c:\test.txt) özelliği ile yükleyip
ExecSQL ile çalıştırmak. FireBird te bunu nasıl yaparım.
Mustafa hocam bu IB Script component'ini nereden bulabilirim. acaba Delphi 7 kullanıyorum ama bu component'i bulamadım
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
merhaba ,
bir tablonun create cümlesi bittikten sonra sonuna " ; " noktalı virgül koyman gerekir.
iyi çalışmalar.
bir tablonun create cümlesi bittikten sonra sonuna " ; " noktalı virgül koyman gerekir.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
-
- Üye
- Mesajlar: 136
- Kayıt: 18 Oca 2005 05:24
- Konum: İzmir
Merhaba,
gkimirti'nin dediği gibi ibScript bileşenini kullanabilirsin ya da kendin SQL Script içindeki komutları ayırarak IBQuery ile bir döngü içinde ayrı ayrı çalıştırabilirsin.
Örnek:
gkimirti'nin dediği gibi ibScript bileşenini kullanabilirsin ya da kendin SQL Script içindeki komutları ayırarak IBQuery ile bir döngü içinde ayrı ayrı çalıştırabilirsin.
Örnek:
Kod: Tümünü seç
function IBSQLExec(FileName: string; IBSql: TIBQuery): Boolean;
const
SetTerm = 'SET TERM';
var
S, SQuery: string;
Separator: string;
begin
Result:= True;
Separator:= ';';
try
S:= Trim(FileToStr(FileName));
if (Pos(Separator, S) = 0) then
S:= S + Separator;
while (Length(S) > 1) do
begin
Application.ProcessMessages;
SQuery:= Copy(S, 1, Pos(Separator, S) - 1);
SQuery:= NoTerm(SQuery);
S:= Trim(Copy(S, Pos(Separator, S) + Length(Separator), Length(S) - Pos(Separator, S) + Length(Separator)));
S:= NoTerm(S);
if Pos(SetTerm, UpperCase(SQuery)) > 0 then
begin
Separator:= Trim(Copy(SQuery, Pos(SetTerm, UpperCase(SQuery)) + Length(SetTerm), Length(SQuery) - Pos(SetTerm, UpperCase(SQuery)) + Length(SetTerm)));
SQuery:= Trim(Copy(SQuery, 1, Pos(SetTerm, UpperCase(SQuery)) - 1));
end;
if Length(SQuery) > 0 then
begin
if IBSql.Active then
IBSql.Close;
IBSql.ParamCheck:= False;
IBSql.SQL.Clear;
IBSql.SQL.Text:= SQuery;
try
IBSql.ExecSQL;
IBSql.Transaction.Commit;
except
IBSql.Transaction.Rollback;
Result:= False;
end;
end;
if not (Pos(Separator, S) > 0) then
Break;
end;
except
Result:= False;
Exit;
end;
end;
function FileToStr(FileName: string): string;
var
FileStream: TFileStream;
begin
Result:= '';
if FileExists(FileName) then
begin
FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
SetLength(Result, FileStream.Size);
FileStream.ReadBuffer(Pointer(Result)^, FileStream.Size);
finally
FileStream.Free;
end;
end;
end;