procedure TForm1.Button1Click(Sender: TObject);
var
TempStr1,TempStr2,Msg:string;
begin
try
with Fdm.Table1 do
begin
Active:=False;
TableName:='a.dbf';
TableType:=ttFoxPro;
FieldDefs.Add('第一列',ftstring,30);//FieldDefs.Add('A',ftString,30);//这里写成应为就没问题,中文就是乱码
FieldDefs.Add('第二列',ftstring,30);//FieldDefs.Add('B',ftString,30);
FieldDefs.Add('第三列',ftstring,30);//FieldDefs.Add('C',ftstring,30);
CreateTable;
end;
except
MessageDlg('出现异常,无法创建dbf文件!',mtInformation,[mbOk],0);
end; TempStr1:='为啥表头写中文就出错呢?'; TempStr2:='Demo2'; try
with Fdm.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into a(第一列,第二列) values('+''''+TempStr1+''''+','+''''+TempStr2+''''+') ');
//SQL.Add('insert into a(A,B) values('+''''+TempStr1+''''+','+''''+TempStr2+''''+')');//换成英文就没问题
ExecSQL;
end;
Msg:='Dbf文件生成完毕,文件保存在'+ExtractFilePath(Application.ExeName)+'下!';
MessageDlg(Msg,mtInformation,[MbOk],0);
except
MessageDlg('出现异常,向dbf文件中插入数据出错!',mtInformation,[MbOk],0);
end;
end;
大家来帮帮忙啊,怎么回事?一直找不到原因。
begin
Close;
SQL.Clear;
SQL.Add('insert into a(第一列,第二列) values('+''''+TempStr1+''''+','+''''+TempStr2+''''+') ');
//SQL.Add('insert into a(A,B) values('+''''+TempStr1+''''+','+''''+TempStr2+''''+')');//换成英文就没问题
ExecSQL;
end;
数据库要使用nVarchar类型。
插入数据使用parameter方式
TempStr1,TempStr2变量类型为WideString才可以。
你的方法不行啊,我是要生成DBF文件
如果能光使用英文字段,我就不会问这问题了To:zhao_yong
Access数据库当然不会出这问题了。但是我用生成的是dbf格式的文件,不是mdb的Access。
顺便问下,Unicode编码在哪里试?谢谢了