Q&A

  • ADO에서 빈 문자 삽입/날짜와 시간 입력/ADOQuery에서의 복잡한 SQL문 런타임에러
ADO문제로 이렇게 연락을 드리게 됐었습니다.

ADOConnection을 ODBC로 설정하고 ADOQuery에서 빈문자가 안들어가는 이유가

파라미터의 Size에 문자길이를 설정하면 빈문자가 삽입이 된다는것을 알았습니다.



DB는 Access DB를 사용했습니다.

pName : 빈문자 허용, 반드시 필요한 필드는 아님



if Trim(Edit1.Text) ='' then begin

qWork.Parameters.ParamByName('pName').Value :='';

qWork.Parameters.ParamByName('pName').Size :=2;

end

else

qWork.Parameters.ParamByName('pName').Value :=Trim(Edit1.Text);









그런데 날짜와 시간을 입력하기 위해서 Now함수를 써서 필드에 넣었는데

날짜만 들어갑니다. 그래서 그냥 double필드를 만들어서 날짜와 시간을

넣고 다시 읽을때 날짜와 시간으로 읽었는데, 어떻게 하면 이런 방법을

쓰지 않고 그냥 BDE에서 쓰던 방법과 같이 편한방법이 없습니까..



pDate :double속성 필드

write... qWork.Parameters.ParamByName('pDate').Value :=Double(Now);

read ... date :=qWork.FieldByName('pDate').AsVariant;





이 두가지의 번거러움이 정말 저를 미치게 합니다.

그리고 이상하게 ADOConnection에서 MS Jet를 선택하고

ADOQuery에 복잡한 SQL문장을 넣으면 실행중에 에러가 발생합니다.

하지만 똑같은 문장을 디자인상에서 Object Inspector의 SQL속성에 넣으면

에러가 일어나지 않습니다. 그 이유가 무엇인지요...



qCustom.Active :=False;

qCustom.SQL.Clear;

qCustom.SQL.Add('SELECT BookTable.BName, BookTable.BWriter, Count(JangbuLentTable.JLBookCode) AS 개수 ');

qCustom.SQL.Add('FROM BookTable INNER JOIN JangbuLentTable ON BookTable.BCode = JangbuLentTable.JLBookCode ');

qCustom.SQL.Add('GROUP BY BookTable.BName, BookTable.BWriter ');

qCustom.SQL.Add('HAVING (((Count(JangbuLentTable.JLBookCode))>=3)) ');

qCustom.Active :=True;







그리고 저는 델파이5를 사용하고 update pack1을 설치했습니다.



도와주십시요...





0  COMMENTS