关于数据保存的问题???
我用四个通道采集数据,在memo控件里显示,数据格式如下(每两个数据之间相隔两个空格,并且数据在memo中自动换行):
U1=0.0000278V U2=0.0000233V U3=0.0000108V U4=0.0000042V U1=0.0000247V U2=... U3=... U4=...如此循环下去
现在我想将memo中的数据分门别类的保存到.db数据库当中,以便以后调用。
保存的格式如下:
U1 U2 U3 U4
0.0000278V 0.0000233V 0.0000108V 0.0000042V
0.0000247V ... ... ...
. . . .
. . . .
. . . .
请问,那位大神出出主意,怎么实现?
[解决办法]
2L的思路相当值得学习啊,我以前只会傻傻的处理字符串,不过这样操作有一个漏洞,虽然string可以不限长度,但是使用ado控件的话sql语句过长有时候是会出问题的
给LZ另外个思路,
要求严格控制字符串的格式就是u1,u2,u3,u4之间用空格区分,且字符串本身没有空格,这样你先把memo1中 "空格U1="替换成 "回车换行u1=",然后memo1可以直接保存成文本,之后可以使用access导入文本的方式,使用空格当区分符导入数据库,其实使用sql也可以把文本导入数据库,不过书写的格式我忘记了,和excel类似
另外也可以用本办法纯字符串处理,利用空格做区分符转成字符串列表 然后再使用sql语句一行行插入
[解决办法]
想用循环当然方法很多,再给你一种,自己根据情况去完善吧
- Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var i:integer; s,s1,s2:string;begin Query1.Close; Query1.SQL.Text:='Select U1,U2,U3,U4 From t Where 1<>1'; Query1.Open; Memo1.Text:=stringreplace(Memo1.Text,' ',#13#10,[rfReplaceAll]); for i:=0 to Memo1.Lines.Count -1 do begin if Trim(Memo1.Lines.Strings[i])='' then continue; s1:=Memo1.Lines.Names[i]; s2:=Memo1.Lines.ValueFromIndex[i]; with Query1 do begin if LowerCase(s1)='u1' then append; fieldbyname(s1).asstring:=s2; if LowerCase(s1)='u4' then post; end; end;end;
[解决办法]
在写入MEMO之前或同时处理数据,写入数据库,比写入MDEMO后再处理MEMO中的数据省事得多。而且不用考虑重复和更新的问题。