안녕하세요..
먼저번에 자료양이 많아 고민하던 사람입니다.
어쩔수 없이 델파이가 제공하는 인터베이스라는것을
이용하여 자료를 옮기려고 하는데 레코드 하나만 이동하고
다음과 같은 에러 메세지가 나옵니다.
해결방법좀 알려주세요..
.에러메세지
General SQL error, arithmetic exception, numeric overflow, or
string truncation Cannot transliterate character between character set.
그리고 워낙 초보라 창피하긴 한데 다음은 코딩내용입니다.
(너무 흉보지는 마셔요..)
function Move(Name: String): String;
var
Pield, Ilja: String;
i: Integer;
begin
Name:=UpperCase(Name);
if Copy(Name,1,4)='DMMC' then Ilja:='PMILJA'+Init(Name);
if Copy(Name,1,4)='IBCH' then begin
if Name='IBCHUGO.DBF' then Ilja:='ILJA';
if Name='IBCHUDO.DBF' then Ilja:='ILJA';
end;
if Copy(Name,1,4)='DM_C' then Ilja:='CREILJA';
if Form1.Table1.Active then Form1.Table1.Close;
Form1.Table1.Exclusive:=True;
Form1.Table1.TableName:=Copy(Name,1,Length(Name)-4);
Form1.Table1.Open;
if Form1.Table1.Active then Form1.Table1.EmptyTable;
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add(format('SELECT * FROM "%s"',[Name]));
Form1.Query1.Open;
repeat
Form1.Table1.Append;
Form1.Table1.FieldByName('MST_KEY').AsString:='';
Form1.Table1.FieldByName('FLAG').AsString:='0';
Form1.Table1.FieldByName('ILJA').AsDateTime:=
Form1.Query1.FieldByName(Ilja).AsDateTime;
for i:=0 to Form1.Query1.FieldCount-1 do begin
Pield:=Form1.Query1.Fields[i].DisplayName;
if Not(Pield=Ilja) then
Form1.Table1.FieldByName(Pield).Value:=Form1.Query1.FieldByName(Pield).Value;
end;
Form1.Table1.Post;
Form1.Query1.Next;
until Form1.Query1.EOF;
end;
>Table 은 인터베이스 테이블, Query는 DBF 테이블임.
|