excel의 내용과 table의 내용을 비교하려고 하는데 에러가 납니다.
아래의 소스를 보시고 코딩 뒷 부분에 주석으로 에러 부분을 써 놨습니다.
좀 알려주세요. 도와주세요
procedure TForm1.BitBtn1Click(Sender: TObject);
var
ExcelApp, ExcelBook, ExcelSheet : Variant;
i, j : Integer; // 순환변수
Begin
try
ExcelApp := CreateOLEObject('Excel.Application');
except
ShowMessage('Excel이 설치되어 있지 않습니다!!!');
Exit;
end;
Try
ExcelApp.Visible := False;
ExcelApp.DisplayAlerts := False;
// 불러들일 화일명....
// ExcelBook := ExcelApp.WorkBooks.save('C:\aa.XLS');
ExcelBook := ExcelApp.WorkBooks.open('C:\aa.XLS');
// ExcelBook := ExcelApp.WorkBooks.Open('G:\Documents and Settings\PDORY\바탕 화면\200009s.XLS');
ExcelBook := ExcelApp.WorkBooks.item[1];
ExcelSheet := ExcelBook.Worksheets.Item[1];
For i := 1 to ExcelSheet.UsedRange.Rows.count do BEGIN
WITH Q1 DO BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD(' select pummok from tta01 '
+ ' where brand = ''C'' '
+ ' and palcode = ''' + VarToStr(ExcelSheet.Cells[i,5]) + ''' '); // // 이 부분에서 Undecalred identifier: 'VarRoStr' 에러 발생
{ FOR J := 1 TO 62 DO BEGIN
IF J = 8 THEN BEGIN
IF (TRIM(VarToStr(ExcelSheet.Cells[i,J]))='- -') or (TRIM(VarToStr(ExcelSheet.Cells[i,J]))='') THEN
SQL.ADD(' ''1900-01-01'' ')
ELSE
SQL.ADD(' '''+TRIM(VarToStr(ExcelSheet.Cells[i,J]))+''' ');
END ELSE BEGIN
IF J >= 15 THEN
SQL.ADD(' '+ INTTOSTR(STRTOINT(TRIM(VarToStr(ExcelSheet.Cells[i,J]))))+' ')
ELSE BEGIN
IF J=1 THEN begin
SQL.ADD(' '''+ COPY(INTTOSTR(STRTOINT(TRIM(VarToStr(ExcelSheet.Cells[i,J])))+10000),2,4) +''' ');
end ELSE
SQL.ADD(' '''+TRIM(VarToStr(ExcelSheet.Cells[i,J]))+''' ');
END;
END;
IF J <> 62 THEN
SQL.ADD(' , ')
ELSE
SQL.ADD(' ) ');
END; }
EXECSQL;
showmessage('111111');
showmessage(ExcelSheet.cells[i,5]);
if Q1.RecordCount <> 0 then
ExcelSheet.cells[i,4] := fieldbyname('pummok').asString;
END;
END;
ExcelApp.WorkBooks.Close;
ExcelApp.quit;
ExcelApp := unassigned; // 이 부분에서 Undecalred identifier: 'unassigned' 에러 발생
showmessage(' 작 업 완 료 ');
Except
on err : exception do begin
ExcelApp.WorkBooks.Close;
ExcelApp.quit;
ExcelApp := unassigned;
ShowMessage('작업이 취소되었습니다. Data확인요망-'+err.message);
end;
end;
end;
5번째 값을 가져올때 VarToStr이 선언되지 않았다고 에러나는건 이 함수나 펑션을 포함하는 유닛이
없어서 그래요.
Uses 절에 Variants 포함하시고 해보세요..