2012-11-29 2 views
0

SQL.TEXT 변수를 사용하여 DBExpress를 사용하는 SQL.Clear; SQL.Add(); 문을 피하기 위해 쿼리를 초기화하는 습관을 들었습니다.DBGo INSERT INTO via SQL.CommandText

새로운 작은 프로젝트를 위해하는 dbGo을 사용하여,이 있습니다 : 구문 오류와

SQL.CommandText := 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')'; 
ExecSql; 

이 명령 중단합니다. 그러나 우리는 사용하는 경우 :

SQL.Clear; 
SQL.Add('INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')'); 
ExecSql; 

그것은 잘 작동! 글쎄, 나는이 문제를 따라 잡기 전에 시간을 낭비했다. 어떤 오류가 있습니까? dbGo.ADOQUERY.Sql.Clear 일 수 있습니다. dbGo.ADOQUERY.SQL.CommandText을 통한 배정은 자세히 처리하지 않습니다. 기묘한. 어떤 명령?

+0

dbGo.ADOQUERY.Sql의 유형은 무엇입니까? – Igor

+0

와트 유형의 개체를 사용하고 있습니까? ADOQuery? ADOCommand? – jachguate

+0

IMO,'dbGo.ADOQUERY.SQL.Text : = 'INSERT ...'또는'dbGo.ADOQUERY.CommandText : ='INSERT ... '이어야합니다. 거기에 믹스가있는 것 같아요 ... –

답변

4

CommandText은 실제로는 SELECT 또는 데이터 (레코드 세트)를 반환하는 다른 작업에서만 작동합니다. ExecSQL 또는 INSERT/DELETE 유형 조작을 위해 설계되지 않았습니다.

단순히 대신 ADOQuery.SQL.Text를 사용 : 직접 자동으로 Text 속성을 설정

ADOQuery1.SQL.Text := 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')'; 
ADOQuery1.ExecSQL; 
ADOQuery1.Close; 

Clear에 대한 필요성을 제거하기 전에이 무엇인지 대체합니다.