델파이 얼마 안된 초보 입니다. 아래와 같이 소스를 제작하고 컴파일을 시켜보니 에러는 안나는데 직접 돌려보면 에러메시지가 'ORA-00928 SELECT 키워드가 없습니다.' 등의 메시지가 나옵니다. Select 문이 잘못된건가여? 전 아무리봐도 에러가 없는것 같은데...ㅡ.ㅡ;
어제까지 끝내야 하는건데 오늘까지도 못 끝내면 ㅜ.ㅜ...아마 쫓겨날지 멀라여 도와주세요.
procedure TForm1.BitBtn1INSERTClick(Sender: TObject);
var str,str1,str2,strr,value,I : string;
var value1 : integer;
begin
with dmchosun.Query1 do
begin
strr := 'select a.*, b.* from t_mappingjoywow a, product b where a.sortcode=b.sortcode and rownum < 6 order by b.number1';
Close;
SQL.Clear;
SQL.Add(strr);
Open;
I := fieldbyname('LevelA').asstring + fieldbyname('LevelB').asstring + fieldbyname('LevelC').asstring;
if EOF then exit;
end;
with dmchosun do
begin
while not Query1.Eof do
begin
with Query2 do
begin
str := 'select max(grcode) as Maxval from T_Goods where levelA=';
str := str + Query1.fieldbyname('LEVELA').asstring + 'and levelB=';
str := str + Query1.fieldbyname('LEVELB').asstring + 'and levelC=';
str := str + Query1.fieldbyname('LEVELC').asstring;
Close;
SQL.Clear;
SQL.Add(str);
Open;
end;
value := Query2.fieldbyname('Maxval').asstring;
if value = '' then begin
value := '0001';
end else if value <> '' then begin
value := IntToStr(StrToInt(value)+1);
if length(value) <> 4 then
for value1 :=0 to 4 do begin
value := '0' + value;
if length(value) = 4 then
break;
end;
end;
with Query3 do
begin
str1 := 'insert into T_GATTR (:aa1,:aa2,:aa3,:aa4,:aa5,:aa6,:aa7,:aa8,:aa9) values(:a1,:a2,''00000001'',''02304'',:a3,:a4,:a5,:a6,:a7)';
Close;
SQL.Clear;
SQL.Add(str1);
ParamByName('aa1').asstring := 'GCODE'; // value
ParamByName('aa2').asstring := 'GRCODE'; // I+value
ParamByName('aa3').asstring := 'STOREID'; // 00000001
ParamByName('aa4').asstring := 'STORETYPE'; // 02304
ParamByName('aa5').asstring := 'ATTRVALUE1'; // norm
ParamByName('aa6').asstring := 'MDPRICE'; // supplyp2
ParamByName('aa7').asstring := 'BUYPRICE'; // supply1
ParamByName('aa8').asstring := 'CUSTOMERPRICE'; // price
ParamByName('aa9').asstring := 'SALESPRICE'; //won
ParamByName('a1').asstring := value;
ParamByName('a2').asstring := I + value;
ParamByName('a3').asstring := Query1.fieldbyname('NORM').asstring;
ParamByName('a4').asstring := Query1.fieldbyname('SUPPLYP2').asstring;
ParamByName('a5').asstring := Query1.fieldbyname('SUPPLYP1').asstring;
ParamByName('a6').asstring := Query1.fieldbyname('PRICE').asstring;
ParamByName('a7').asstring := Query1.fieldbyname('WON').asstring;
ExecSQL;
end;
with Query4 do
begin
str2 := 'insert into T_GOODS (:bb1,:bb2,:bb3,:bb4,:bb5,:bb6,:bb7,:bb8,:bb9) values(:b1,''00000001'',''02304'',:b2,:b3,:b4,:b5,:b6,:b7)';
Close;
SQL.Clear;
SQL.Add(str2);
ParamByName('bb1').asstring := 'GRCODE';
ParamByName('bb2').asstring := 'STOREID';
ParamByName('bb3').asstring := 'STORETYPE';
ParamByName('bb4').asstring := 'GNAME';
ParamByName('bb5').asstring := 'COMPANY';
ParamByName('bb6').asstring := 'SHOTINFO';
ParamByName('bb7').asstring := 'DESCRIPTION';
ParamByName('bb8').asstring := 'LARGEIMAGE';
ParamByName('bb9').asstring := 'WRITEDATE';
parambyname('b1').asstring := I + value; // level1+gcode
ParamByName('b2').asstring := Query1.fieldbyname('PRODNAME').asstring;
ParamByName('b3').asstring := Query1.fieldbyname('MAKECOM').asstring;
ParamByName('b4').asstring := Query1.fieldbyname('PRODINFO1').asstring;
ParamByName('b5').asstring := Query1.fieldbyname('PRODINFO2').asstring;
ParamByName('b6').asstring := Query1.fieldbyname('PRODPIC').asstring;
ParamByName('b7').asstring := Query1.fieldbyname('PRODDATE').asstring;
ExecSQL;
end;
memo1.text := str1;
memo2.text := I+value;
Query1.next;
end;
end;
end;
str := 'select max(grcode) as Maxval from T_Goods where levelA=';
str := str + Query1.fieldbyname('LEVELA').asstring + 'and levelB=';
str := str + Query1.fieldbyname('LEVELB').asstring + 'and levelC=';
str := str + Query1.fieldbyname('LEVELC').asstring;
해결하셨는지 모르겠네요..
제가 보기엔 위에 부분이 잘못된거같은데.
첫번째 str을
str := 'select max(grcode) as Maxval from T_Goods where levelA= ''';
이렇게 수정하셔야 할듯하고요.
두번째 str은
str := str + Query1.fieldbyname('LEVELA').asstring + ''' and levelB= ';
이렇게 하셔야될듯 합니당..
그래서...다시 써보면..
str := 'select max(grcode) as Maxval from T_Goods where levelA = ''';
str := str + Query1.fieldbyname('LEVELA').asstring + ''' and levelB= ''';
str := str + Query1.fieldbyname('LEVELB').asstring + ''' and levelC= ''';
str := str + Query1.fieldbyname('LEVELC').asstring + '''';
asstring이 들어가는 부분에 ' '가 붙으니까요.
'앞뒤로 띄어쓰기도 신경쓰셔야하고요..