大家知道dbgrid显示数据
adoconnetion 设置要连接的数据库
adoquery 写sql语句 选择记录行
datasource 把adoquery数据做连接
dbgrid 显示datasource的数据把dbgrid中显示的数据写到文本文件中
可以利用循环//因为知道表格有几列 几行了 就可以利用循环了while not mydbgrid.DataSource.DataSet.Eof do
begin
str:='';
for iCount := 0 to mydbgrid.Columns.Count - 1 do
str:=str+mydbgrid.Columns.Items[iCount].Field.AsString+' ';
Writeln(txtfile,str);
mydbgrid.DataSource.DataSet.Next;
end;现在反过来 把文本文件中的内容写到dbgrid中 怎么整???我的目的是这样的:导入文本文件内容到dbgrid中,某些列可以修改
改好之后然后点一个按钮
把dbgrid内容写到相应的数据表中
adoconnetion 设置要连接的数据库
adoquery 写sql语句 选择记录行
datasource 把adoquery数据做连接
dbgrid 显示datasource的数据把dbgrid中显示的数据写到文本文件中
可以利用循环//因为知道表格有几列 几行了 就可以利用循环了while not mydbgrid.DataSource.DataSet.Eof do
begin
str:='';
for iCount := 0 to mydbgrid.Columns.Count - 1 do
str:=str+mydbgrid.Columns.Items[iCount].Field.AsString+' ';
Writeln(txtfile,str);
mydbgrid.DataSource.DataSet.Next;
end;现在反过来 把文本文件中的内容写到dbgrid中 怎么整???我的目的是这样的:导入文本文件内容到dbgrid中,某些列可以修改
改好之后然后点一个按钮
把dbgrid内容写到相应的数据表中
解决方案 »
- 问:创建一个类,procedure Execute;override;是自动执行的吗?
- Delphi中SQLSErver2000数据库备份还原
- 关于控制word中图片和表格的问题!
- 急求delphi的servers组件的使用帮助文档!
- 紧急求助:CLientSocket在循环里发包,如何收到回复?
- 谁有《Delphi深度历险》或《Delphi高手突破》?
- 请问为什么?
- 一个关于日期的问题!
- 有谁能给个ado控件实现master/detail表的简单例子程序,我将感激不禁
- d
- IdSMTP在Delphi2009中发送邮件乱码
- 在delphi中用ADO读取月excel数据时如某列大部分是数字时遇到汉字读不出来(在excel中已设为文本格式),请问怎么解决???急!!
根据文件中的字段,
先建立dataset的字段,然后根据循环记录对每一个字段赋值,
要的话 怎么设置??希望知道的大虾们 讲清楚点
谢谢谢谢 急!!!
当然要先给adoquery建立字段呀
然后再给字段赋值
循环对每一条记录做至于提交数据,可以写sql语句
楼主,不好意思,一直用bde的query或是clientdataset了,如果真要实现这样的功能,可以用bde的query,或者是用stringgrid,自己手动赋值,提交数据库估计都要写sql了
例如格式如下
a b c d e
然后,你用文本的读写函数从文本中读取数据,直到到行尾.
读出一行,你就按tab作为分隔符,从每行中依次读出a,b,c,d,e再将其对应的值保存在dbgrid的中.
读到dbgrid的中,其实就是利用它联接的dataset(adoquery,adodataset,adotable)等的数据控件实现.
比如:adoquery1.append;
adoquery1.fieldbyname('a').value := a;
...
...
最后都修改完后,你再用一个按钮做为提交操作.
这时最好有事务的方式进行,保证数据的一致性.但如果这样的需求要我来做,我会,采用导入按钮(可选择文本文件)将数据load后直接存到数据库中,然后用dbgrid来显示出来.
有不对的,用修改方式去修改,然后保存.
@Input nvarchar(400)
,@Pattern nvarchar(20)SET @Input = N'这是%无___法判断的问题吗这%_%_%%是无法判断的问题吗%__%这是无%法判断的问题吗'SET @Pattern = N'%%_%' --这里如何填才能定位到'%_'呢?SELECT PATINDEX(@Pattern, @Input)
--我给你写一段吧
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
str:='select * from ' +
'opendatasource(''microsoft.jet.oledb.4.0'',''text;hdr=no;database=d:\soft'')...[22#txt]';
with adoquery1 do
begin
close;
sql.Clear;
sql.Add(str);
open;
end;
end;end.
就是我的一个表a(编号,名称,数量,规格)这些字段现在我一个文本文件中 保存的是 编号 数量
111 1
112 4
... ...
... ...
现在要求把文本中数据导入到表格中
就可以根据编号 把名称规格也显示在表格dbgrid中然后在表格中可以修改数量之后点保存 就把数据插入到表中
具体怎么做???
急急急
a, b: TStrings;
i,j: integer;
begin
a := TStringList.Create;
b := TStringList.Create;
a.Loadfromfile(filename);//读取文本文件
for i := 1 to a.count-1 do
begin
b.clear;
b.DelimitedText:= a.Strings[i];
b.Delimiter := '分隔符';//不知道你的分隔符是什么
adoquery.append;
for j := 0 to adoquery.fieldcount-1 do
begin
adoquery.fields[i].value := b.strings[j];
end;
adoquery.post;
end;
//上面的代码就是从文本文件读出并导入到dataset中,但是要求文本文件的格式和dataset中的字段名是对应的
//代码没有测试,但是我的意思表达清楚了
//保存到数据库中的方法,可以直接写sql就行了
end;
编号 数量
111 1
112 4 procedure TForm1.Button1Click(Sender: TObject);
var
aa: TStringList;
bb: TStringList;
i,j: integer;
begin
aa := TStringList.Create;
bb := TStringList.Create;
aa.LoadFromFile('d:\aa.txt');
adoquery1.Open;
for i:=1 to aa.Count-1 do
begin
adoquery1.Append;
bb.Clear;
bb.DelimitedText := aa.Strings[i];
bb.Delimiter := chr(VK_TAB);
for j := 0 to adoquery1.FieldCount-1 do
begin
adoquery1.Fields[j].Value := bb.Strings[j];
end;
end;
end;
在窗体上设置好 adoconnection,adoquery,dbgrid,datasource这关系就好了,直接调用sql语句,
就可以把文本文件的内容显示在dbgrid中
就是我的一个表a(编号,名称,数量,规格)这些字段 现在我一个文本文件中 保存的是 编号 数量
111 1
112 4
... ...
... ...
现在要求把文本中数据导入到表格中
就可以根据编号 把名称规格也显示在表格dbgrid中 然后在表格中可以修改数量 之后点保存 就把数据插入到表中上面说的 都不能满足我的要求还有就是 都会有插入重复值错误提示!!!另外有个问题 我想
adoquery2.SQL.Add('select kp_item_no,kp_item_name into #jb_spzl from jb_spzl');先把要导入的数据放在#jb_spzl中 是不是在程序编译完之后 就在数据库中建立了那个临时表我在运行程序时候 提示已经存在那个临时表但是 我在查询分析器中又没有那个临时表
????
opendatasource('microsoft.jet.oledb.4.0','txt;hdr=no;database=文件路径')...[文件名#txt]
select * from
opendatasource('microsoft.jet.oledb.4.0','text;hdr=no;database=c:\')...[R9AppServerConfig#txt]这是我实际测试的结果,我在c盘根目录下有一个R9AppServerConfig.txt文件,在查询分析器中执行上面的语句,会显示文本文件的内容,效果挺好。另外要注意opendatasource是sql server 2000 sp3中带入的新命令。
如何使用其他的分隔符呀?
将文本文件加载到DBGrid1呀,
?????????????????