문제는 값을 올바르게 설정하는 대신 변수 이름을 하드 코딩하여 매개 변수가있는 쿼리 BTW를 사용하여 수행해야한다는 것입니다. 또한, 귀하의 SQL은 끔찍한; UPDATE
을 여러 번 반복하는 대신 단일 UPDATE
에서이 작업을 수행 할 수 있습니다. 이것은 당신이 시작해야
합니다 (#13
에 대해 아래 참고 참조)
iexc := round(iexc/icount);
iint := round(iint/icount);
inau := round(inau/icount);
iovr := round(iovr/icount);
AdoQuery1.SQL.Text := 'update Tickets_Tbl'#13 +
'set Excitement = :iexc,'#13 +
' Intensity = :iint,'#13 +
' Nausea = :inau,'#13 +
' Overall = :iovr'#13 +
'where RollerCoaster = :sride';
AdoQuery1.Parameters.ParamByName('iexc').Value := iexc;
AdoQuery1.Parameters.ParamByName('iint').Value := iint;
AdoQuery1.Parameters.ParamByName('inau').Value := inau;
AdoQuery1.Parameters.ParamByName('iovr').Value := iovr;
AdoQuery1.Parameters.ParamByName('sride').Value := sride;
AdoQuery1.ExecSQL;
코드의 #13
은 단순히 당신에 대해 제대로 걱정하지 않아도 때문에 쉽게 캐리지 리턴입니다 각 연속 행의 끝 또는 시작 앞뒤에 공백을 삽입합니다. 기본적으로 SQL Server Management Studio에 줄 단위로 쿼리를 입력하는 것과 같습니다. 각 줄의 끝에 을 입력하고을 입력하십시오. 각 줄에 대해 AdoQuery1.SQL.Add
을 사용하여 똑같은 작업을 수행 할 수 있지만 SQL을 복사하고 테스트 또는 디버깅 또는 수정을 위해 외부에서 실행해야 할 때 더 어렵게 만듭니다. 위의 하나 개인적으로 당신을 위해 더 쉽고 더 읽기 중
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('update Tickets_Tbl');
AdoQuery1.SQL.Add('set Excitement = :iexc,');
AdoQuery1.SQL.Add('Intensity = :iint,');
AdoQuery1.SQL.Add('Nausea = :inau,');
AdoQuery1.SQL.Add('Overall = :iovr');
AdoQuery1.SQL.Add('where RollerCoaster = :sride');
사용과 유사하다. 필자는 클립 보드에서 일반 SQL을 가져 와서 '
및 #13 +
과 함께 자동으로 델파이의 코드 편집기에 붙여 넣을 수있는 유틸리티가 있거나, ''
문자와 #13 +
이 포함 된 따옴표로 묶인 텍스트를 가져 와서 자동으로 제거하는 유틸리티를 사용합니다. 수동 정리없이 SSMS 나 Access 또는 다른 SQL 유틸리티에 붙여 넣을 수 있습니다.
델파이에 대해 잘 모르겠지만 (다른 줄을 기반으로)'adoquery1.SQL.Text : = 'update Tickets_Tbl set Excitment = iexc where'은'adoquery1.SQL.Text : ='update 여야합니다. Tickets_Tbl excitment = '+ iexc +'where' (즉, 프로그램의 값을 SQL 문에 삽입하고자 함) – YowE3K
문제는 해당 변수 대신 상수 문자열'iexc'를 사용한다는 것입니다. 그러나 매개 변수를 사용하십시오. – Victoria