我在一个过程中频繁的用到A表中各字段(C,D,E,F,G),如果每次都OPEN得到一下,速度实在太慢,我想把A表中的各字段的的值(只有一行)放到一个STRINGLIST里,快速调用,请问应该STRINGLIST如何使用,如何调用(怎样分别每个字段),我是个新手,请给详细举举例子,谢谢
解决方案 »
- TStringList 放入DBGridEh,grid中每行还要checkBox
- 一颗颓废的心
- 如何在delphi中得到存储过程return的指
- 救命啊!EDBEngine 出错啊!望高手指点迷津
- 为什么我的数据模块与tdbedit关联不上呀
- 超简单问题,如何删除一个字符串后3个字符
- 也不知道怎么搞的.二级居然把pascal给删除了.也没有delphi
- access的清空问题。
- 你有做過數據集的部件, 沒有請看下例: 做好一個數據集部件, 但不能用各位請看看對你可能有幫助, 說明都很詳細:
- 怎么我在DBimage里面不能看到jpg格式的图片?
- 如何取得数据库里面的一个值???
- 如何实现EDIT 输入内容不同 如何规定EDIT输入数的最大限制
var
VL_Temp:String;
VL_I :integer;
begin
Result :=TStringList.Create;
VL_Temp :=vStr;
while VL_Temp <>'' do
begin
VL_I :=POS(';',VL_Temp);
if VL_I =0 then
begin
Result.Add(VL_Temp);
VL_Temp :='';
end
else
begin
Result.Add(Copy(VL_Temp,0,VL_I-1));
VL_Temp :=Copy(VL_Temp,VL_I+1,Length(VL_Temp)-VL_I);
end;
end;
end;
var
SelQ:TQuery;
Jfkm,Dfkm,Km:TStrings;
Jfbykm,Dfbykm,Jfbwkm,Dfbwkm,Bykm:TStrings;
i,j:integer;
begin
Result:=True;
SelQ:=TQuery.Create(Nil);
Jfkm:=TStringList.Create;
Dfkm:=TStringList.Create;
Km:=TStringList.Create;
Jfbykm:=TStringList.Create;
Dfbykm:=TStringList.Create;
Jfbwkm:=TStringList.Create;
Dfbwkm:=TStringList.Create;
Bykm:=TStringList.Create;
with SelQ do
begin
DatabaseName:=DBName;
Sql.Add('select distinct kmbm,fx from t_pzmx,t_kmbm where t_pzmx.pzhid=:pzhid'
+' and t_pzmx.kmid=t_kmbm.kmid and t_kmbm.zhtbm=:zhtbm');
ParamByName('pzhid').AsString:=pzhid;
ParamByName('zhtbm').AsString:=zhtbm;
Prepare;
Open;
while not Eof do
begin
if FieldByName('fx').AsInteger=1 then
Jfkm.Add(FieldByName('kmbm').AsString)
else
Dfkm.Add(FieldByName('kmbm').AsString);
Km.Add(FieldByName('kmbm').AsString);
Next;
end;
Close;
Sql.Clear;
Sql.Add('select mc,jbykm,dbykm,jbwkm,dbwkm,bykm from t_pzlx'
+' where zhtbm=:zhtbm and pzlxbm=:pzlxbm');
ParamByName('zhtbm').AsString:=zhtbm;
ParamByName('pzlxbm').AsString:=pzlxbm;
prepare;
Open;
if FieldByName('jbykm').AsString<>'' then
Jfbykm:=StrToStrings(FieldByName('jbykm').AsString);
if FieldByName('dbykm').AsString<>'' then
Dfbykm:=StrToStrings(FieldByName('dbykm').AsString);
if FieldByName('jbwkm').AsString<>'' then
Jfbwkm:=StrToStrings(FieldByName('jbwkm').AsString);
if FieldByName('dbwkm').AsString<>'' then
Dfbwkm:=StrToStrings(FieldByName('dbwkm').AsString);
if FieldByName('bykm').AsString<>'' then
bykm:=StrToStrings(FieldByName('bykm').AsString);
end;
................
s:Tstringlist;
begin
s:=Tstringlist.Create();
s.Add('1');
s.Add('2');//加你select 出来的字段
showmessage(s.Strings[1]);//增加的第2个子段值
s.Free;
s:Tstringlist
i:integer;
begin
s:=Tstringlist.create();
with query1 do
begin
for i:= 0 to FieldCount - 1 do
s.Add(Fields[i].AsString);
end;不过,如果你只要保留值,不需要另外用stringlist啊,直接用或者new一个DataSet保存不就行了