2016-08-05 5 views
0

2 개의 스크립트가로드 된 TFDScript 구성 요소가 있습니다. 당신이 TStrings 인스턴스에서 통과 할 것으로 예상하고, 내 코드에서FireDac TFDScript.ExecScript() 작동하지 않습니다.

나는

TFDScript1.ExecuteScript('InsertScript'); 

사용하여 선택한 스크립트를 실행하려고하지만 난이 오류

[DCC Error] StartTask.pas(77): There is no overloaded version of 'ExecuteScript' that can be called with these arguments 

답변

1

the documentation 살펴보면를 얻을 그러나 당신은 단지 String을 전달하려고합니다. TStringList 인스턴스를 만들어 매개 변수로 전달해야합니다. 수신중인 특정 오류는 예상 한 매개 변수와 다른 매개 변수를 전달하고 있음을 나타냅니다. 이미 스크립트를로드 한 경우

var 
    Script: TStringList; 
begin 
    Script:= TStringList.Create; 
    try 
    Script.Text:= 'Some SQL Script'; 
    FDScript1.ExecuteScript(Script); 
    finally 
    Script.Free; 
    end; 
end; 

, 다음 대신 ExecuteAll를 호출합니다.

어떤 이유로 든 한 번에 하나의 스크립트 만 실행하려는 경우 복수 TFDScript 인스턴스를 만듭니다. 이 구성 요소는 한 번에 여러 스크립트 중 하나만 실행하도록 설계되지 않았습니다.

+0

더 읽고 싶으면 내가 원하는 것을하십시오. 모든 구성 요소에로드 된 SQL 스크립트를 실행하고 싶습니다. ie TFDScript.SqlScripts [2] .Exec하지만 그것은 존재하는 것 같습니다. 어떤 다른 사람이 해결책을 가지고 있지 않는 한 –

+1

그리고 나서'ExecuteAll'을 호출하십시오. 더 조심스럽게 문서를 읽어야하며,이 구성 요소를 사용 해본 적이 없으며 몇 초 안에 답을 찾았습니다. 코드 완성조차도 문서가 없어도 답을 얻을 수있었습니다. –

+0

ExecuteAll은 모든 스크립트를 실행합니다. 3 쿼리 (삽입, 업데이트, 삭제)가있을 때 나는 한 번에 하나씩 만 실행하려고합니다. –