请各位帮忙看看这代码有什么问题?为什么我反复调用的时候会出现“未指定的错误”?
adosql是公共函数调用,每查询的时候调用一次。请给改正意见或示例代码。谢谢!
function adosql(q:TADOQuery;sql:string):TADOQuery; //查询公共函数
begin connstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yyxy.mdb;Persist Security Info=False';
q:=TADOQuery.Create(nil);
q.ConnectionString:=connstr;
q.Close;
q.SQL.Clear;
q.SQL.Add(sql);
q.Open ;
result:=q;
end;//调用过程
procedure Edit3ButtonClick(Sender: TObject);
rd:=adosql(rd,'select * from table ');
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
end;
adosql是公共函数调用,每查询的时候调用一次。请给改正意见或示例代码。谢谢!
function adosql(q:TADOQuery;sql:string):TADOQuery; //查询公共函数
begin connstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yyxy.mdb;Persist Security Info=False';
q:=TADOQuery.Create(nil);
q.ConnectionString:=connstr;
q.Close;
q.SQL.Clear;
q.SQL.Add(sql);
q.Open ;
result:=q;
end;//调用过程
procedure Edit3ButtonClick(Sender: TObject);
rd:=adosql(rd,'select * from table ');
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
end;
解决方案 »
- 200分求DDOS代码~~~*****不是想搞破坏,只是想了解****************
- Qreport中怎么设置虚线呢?想在报表中打印一条虚线,且是竖的虚线!
- 异地两台电脑通过Modem通信采取什么传输方式能够更安全些?
- 为了感谢各位朋友的热心帮忙,放分300继续求解!关于SQL语句的问题
- 如何实现数据库中数据的导入和导出?
- 哪有*.BMP,delphi的speedbutton的图标??
- 救救我吧!
- 公司的人都走了!就剩我一个了,浩大的工程还没完成,我现在一个人真累!
- 我怎样取得程序所在的文件夹,我想运行程序一次后,在开机能自动运行,怎办?
- 请问用IMAGE读入一幅JPEG图片怎样在上面化上一个正方形????
- StringGrid 选中某个 单元格时,整行 背景换色。
- StringGrid 能否保存到 TStream中
begin
rd:=adosql(rd,'select * from table ');
text.Items.Clear;
rd.First;
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
end;
begin
rd:=adosql(rd,'select * from table ');
text.Items.Clear;
rd.First;
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
end;
的办法,解决不到问题..
function adosql(q:TADOQuery;sql:string):Bool; //改 q是外部引入的,所以没必要返回,因为本来就是别人的
begin connstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yyxy.mdb;Persist Security Info=False'; //1
// q:=TADOQuery.Create(nil); //从外部引进,就不需要这里在创立了.
q.ConnectionString:=connstr; //2 //1和2在别的地方可以直接连的,你这里的功能只是执行,然后返回数据集.
sql=sql.Trim; //去掉左右空格
if (sql.SubString(1,1)<>'s' or sql.SubString(1,1)<>'S') return false; //不是大小写S开头就返回,汗,涵数结构定义也变一下..不好意思.
q.Close;
q.SQL.Clear;
q.SQL.Add(sql);
q.Open ;
return true;
end; //调用过程
procedure Edit3ButtonClick(Sender: TObject);
if(adosql(rd,'select * from table ')=false) return;
rd.First; //一般都是定位于第一行,但一般我都写的.呵呵
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
end;
begin connstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yyxy.mdb;Persist Security Info=False';
// q:=TADOQuery.Create(nil); 從調用者傳過來如果是一個實例的引用,這裏就不需要創建。
// q.ConnectionString:=connstr; 即然是公用函數,那麼數據庫連接也應該是在調用者身上,而不是在這裏賦值,這樣就不是公用了。 而且這裏的所有 Taoquery你都沒有用 TAdoConnection 去管理,每增加一次查詢,就建立一個 Connection , 估計過不了幾次他就罷工了。
q.Close;
q.SQL.Clear;
q.SQL.Add(sql);
q.Open ;
result:=q;
end; //调用过程
procedure Edit3ButtonClick(Sender: TObject);
rd:=adosql(rd,'select * from table ');
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
end;
procedure adosql(var q: TADOQuery; sql: String); //查询公共函数
begin
connstr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yyxy.mdb;Persist Security Info=False';
q.ConnectionString := connstr;
q.Close;
q.SQL.Clear;
q.SQL.Add(sql);
q.Open;
end; //调用过程
procedure Edit3ButtonClick(Sender: TObject);
var
rd : TADOQuery;
begin
rd := TADOQuery.Create(nil);
try
adosql(rd, 'select * from table');
while not rd.Eof do
begin
text.Items.Add(rd.FieldByName('text').AsString);
rd.Next;
end;
finally
rd.Free;
end;
end;