procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);
var
sqls: string;
begin
sqls := 'INSERT INTO Rgte_table( ' + Nam +' ) ' +' values ('+''''+tim+''''+')';
with rgteQuery do
begin
SQL.Clear;
SQL.Add(sqls);
ExecSQL;
end;
.........
위 프로그램에서 인써트문 신텍스 에러가 뜹니다.
Nam 은 넘겨받은 필드 명이구요
tim 은 삽입할 값입니다.
도와 주세요
아래와 같이 하면 필드를 인식하지 못합니다.
sqls := 'INSERT INTO Rgte_table( ' + ''''+ Nam + ''''+ ' ) '
+' values ('+''''+tim+''''+')';
with rgteQuery do
begin
SQL.Clear;
SQL.Add(sqls);
ExecSQL;
end;
> procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);
> var
> sqls: string;
> begin
> sqls := 'INSERT INTO Rgte_table( ' + Nam +' ) ' +' values ('+''''+tim+''''+')';
>
> with rgteQuery do
> begin
> SQL.Clear;
> SQL.Add(sqls);
> ExecSQL;
> end;
> .........
> 위 프로그램에서 인써트문 신텍스 에러가 뜹니다.
> Nam 은 넘겨받은 필드 명이구요
> tim 은 삽입할 값입니다.
> 도와 주세요
> 아래와 같이 하면 필드를 인식하지 못합니다.
>
> sqls := 'INSERT INTO Rgte_table( ' + ''''+ Nam + ''''+ ' ) '
> +' values ('+''''+tim+''''+')';
>
> with rgteQuery do
> begin
> SQL.Clear;
> SQL.Add(sqls);
> ExecSQL;
> end;
하나의 필드명과 필드값이 넘어올리가 없겠죠??
위의 소스코드가 중간에 편집을 안하셨다면요...
일반적인 파라미터를 갖는 sql insert문은 다음의 구조를 가지고 있습니다.
INSERT INTO TABLE_NAME( FIELD_1 , FIELD_2 , FIELD_3)
VALUES ( :VAL_1 , :VAL_2 , :VAL_3 )
따라서 nam , tim에는 위와 같이
nam => 'FIELD_1 , FIELD_2 , FIELD_3'
tim => 'VAL_1 , VAL_2 , VAL_3'
를 갖는 형태가 아닐까 하는 생각이 드는군요. 그렇다면 아래와 같이 이용해야
하지 않을까 생각이 드는군요.
while Pos(tim , ',') do
begin
// 이하에선 필드갯수만큼의 문자열로 나누어야 겠죠??
end ;
> with rgteQuery do
> begin
Close ;
> SQL.Clear;
> SQL.Add('INSERT INTO Rgte_table(' + nam + ')' );
> SQL.Add('VALUES ('+':PA_VAL1 , :PA_VAL2 , :PA_VAL3 + ')' );
Parambyname('PA_VAL1').AsString := S_VAL1 ;
Parambyname('PA_VAL2').AsString := S_VAL2 ;
Parambyname('PA_VAL3').AsString := S_VAL3 ;
> ExecSQL;
> end;