文本数据,如:1 gg 6 2008-07-12 9.365 False 这条数据写入表bb中,分别对应的类型结果为:int char int datetime float bit 1 gg 6 2008-07-12 9.365 1 (false在逻辑类型里显示为1)
这种转换并写入表的过程应该怎么写呢?难点在于要把纯字符串的内容再写入到表中的各种类型中去。高手们帮我想想吧。
这种转换并写入表的过程应该怎么写呢?难点在于要把纯字符串的内容再写入到表中的各种类型中去。高手们帮我想想吧。
AdoQuery1.Sql.Text:='insert into table(field1,field2,field3,field4,field5,field6) values(:v1,:v2,:v3,:v4,:v5,:v6)';
AdoQuery1.Parameters.ParamByName('v1').Value:=1;
AdoQuery1.Parameters.ParamByName('v2').Value:='gg';
AdoQuery1.Parameters.ParamByName('v3').Value:=6;
AdoQuery1.Parameters.ParamByName('v4').Value:=StrToDate('2008-07-12');
AdoQuery1.Parameters.ParamByName('v5').Value:=9.365;
AdoQuery1.Parameters.ParamByName('v2').Value:=false;
AdoQuery1.ExecSql;
strs,strsLine:TStringList;
i:integer;
begin
strs:=TStringList.Create;
strs.LoadFromFile('c:\1.txt');
strsLine:=TStringLIst.Create; for i:=0 to strs.Count-1 do
begin
strsLine.DelimitedText:=strs.Strings[i]; AdoQuery1.Close;
AdoQuery1.Sql.Text:='insert into table(field1,field2,field3,field4,field5,field6) values(:v1,:v2,:v3,:v4,:v5,:v6)';
AdoQuery1.Parameters.ParamByName('v1').Value:=StrToInt(strsLine.String[0]);
AdoQuery1.Parameters.ParamByName('v2').Value:=strsLine.String[1];
AdoQuery1.Parameters.ParamByName('v3').Value:=StrToInt(strsLine.String[2]);
AdoQuery1.Parameters.ParamByName('v4').Value:=StrToDate(strsLine.String[3]);
AdoQuery1.Parameters.ParamByName('v5').Value:=strsLine.String[4];
AdoQuery1.Parameters.ParamByName('v2').Value:=StrToBool(strsLine.String[2]);
AdoQuery1.ExecSql;
end; strsLine.Free;
strs.Free;
end;
function TPaperImpl.ImportPrice: Boolean;
var
vfile: TextFile;
vfilePath,lineInfo:String;
vOpenDialog: TOpenDialog;
ID,Name,Code,BRecv,KaiPan,Price: String;
i: integer;
begin
vOpenDialog := TOpenDialog.Create(nil);
try
vOpenDialog.Filter := '*.txt';
vOpenDialog.FileName:='*.txt';
if not vOpenDialog.Execute then Exit;
FAC.BeginTrans;
try
vfilePath := vOpendialog.FileName;
AssignFile(vfile, vfilePath);
reset(vfile);
i:=0;
while not eof(vfile) do
begin
readln(vfile,lineInfo);
if i>0 then
begin
ID:=trim(copy(lineInfo,0,6));
Name:=trim(copy(lineInfo,8,8));
Code:=trim(copy(lineInfo,17,8));
BRecv:=trim(copy(lineInfo,29,4));
KaiPan:=trim(copy(lineInfo,37,4));
Price:=trim(copy(lineInfo,45,4));
//开始列新价格
with FQ do
begin
Close;
.....
ExecSql;
end;
end;
inc(i);
end;
closefile(vfile);
Result := true;
FAC.CommitTrans;
except
FAC.RollbackTrans;
Result := false;
end;
finally
vOpenDialog.Free;
end;
end;
帮我看看读数据到文本的代码哪里欠妥?procedure TForm1.Button2Click(Sender: TObject);
var
F1:TextFile;
str:string;
j:integer;
beginif SaveDialog1.Execute
then
begin
AssignFile(F1,SaveDialog1.FileName);
Rewrite(F1); with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from aa ');
open;
first;
for j:=1 to 20 do
begin
memo1.Lines.Add(adoquery1.fieldbyname('no').AsString+trim(adoquery1.fieldbyname('t1').AsString)+adoquery1.fieldbyname('t2').AsString+adoquery1.fieldbyname('t3').AsString+adoquery1.fieldbyname('t4').AsString+adoquery1.fieldbyname('t5').AsString);
next;
end;
end; str:= '';
str:= memo1.Lines.Text;
writeln(f1,str);
CloseFile(F1); showmessage('已完成保存!');
end;end;
你这中间也没有加个分隔符之类的,比如tab或分号
参考代码:procedure TForm1.BitBtn1Click(Sender: TObject);
var
SFileName: string;
begin
{将配置文件 参数读出显示在edit}
SFileName := ExtractFilePath(paramstr(0)) + 'MyTest.ini';
if not FileExists(SFileName) then
raise Exception.Create('文件不存在!')
else
begin
Myinifile := TIniFile.Create(SFileName);
edit2.Text := Myinifile.ReadString('小节名一','关键字1','');
edit3.Text := Myinifile.ReadString('小节名一','关键字2','');
edit4.Text := Myinifile.ReadString('小节名二','关键字1','');
myinifile.Free;
end;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
var
SFileName: string;
begin
{将配置文件 参数读出显示在edit}
SFileName := ExtractFilePath(paramstr(0)) + 'MyTest.ini';
Myinifile := TIniFile.Create(SFileName);
Myinifile.WriteString('小节名一','关键字1',edit2.Text);
Myinifile.WriteString('小节名一','关键字2','关键字2的内容');
Myinifile.WriteString('小节名二','关键字1',edit4.Text);
myinifile.Free;
end;
AdoQuery1.Parameters.ParamByName('v2').Value:=StrToBool(strsLine.String[2]);改成V6晕,你不会直接拿过去原封不动的就用了吧
var
strs,strsLine:TStringList;
i:integer;
begin
if OpenDialog1.Execute then
begin
strs:=TStringList.Create;
strs.LoadFromFile(OpenDialog1.FileName);
strsLine:=TStringLIst.Create; for i:=0 to strs.Count-1 do
begin
strsLine.DelimitedText:=strs.Strings[i];
showmessage(strsLine.DelimitedText);
AdoQuery2.Close;
AdoQuery2.sql.Clear;
AdoQuery2.Sql.Text:='insert into bb(no,t1,t2,t3,t4,t5) values(:v1,:v2,:v3,:v4,:v5,:v6)';
AdoQuery2.Parameters.ParamByName('v1').Value:=StrToInt(strsLine.Strings[0]);
AdoQuery2.Parameters.ParamByName('v2').Value:=strsLine.Strings[1];
AdoQuery2.Parameters.ParamByName('v3').Value:=strsLine.Strings[2];
AdoQuery2.Parameters.ParamByName('v4').Value:=StrToDate(strsLine.Strings[3]);
AdoQuery2.Parameters.ParamByName('v5').Value:=StrTofloat(strsLine.Strings[4]);
AdoQuery2.Parameters.ParamByName('v6').Value:=StrToBool(strsLine.Strings[5]);
AdoQuery2.ExecSql;
next;
end; strsLine.Free;
strs.Free; end;showmessage('已完成保存!');end;错误提示:list index out of bound(0),数组越界?