function TDataBaseConnection.chaxun:array of String; 这么写对吗? 不对该怎么写呢?
Type Tarrstr=array of String; function TDataBaseConnection.chaxun:TarrStr;
在文件 Datamodule 中定义了一个函数,返回查询结果。 function TDataBaseConnection.chaxun:TADOQuery; begin With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select F_PROVINCE from T_ZJK_SF'); Open; end; result:=result; end; 在另一个函数定义一个TAODOQuery 变量,用于接收,你看下面这么写对吗?大哥费心了! procedure TFormSpecialist_Imp.FormCreate(Sender: TObject); var q:TADOQuery; begin q:=DataBaseConnection.chaxun; if q.RecordCount>0 then begin while not q.Eof do begin ComboBox1.Items.Add(q.FieldByName('F_province').AsString); q.Next; end; end else begin ShowMessage('省份查询失败,请再试!'); end; end;
在文件 Datamodule 中定义了一个函数,返回查询结果。 function TDataBaseConnection.chaxun:TADOQuery; begin With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select F_PROVINCE from T_ZJK_SF'); Open; end; result:=ADOQuery1; end; 在另一个函数定义一个TAODOQuery 变量,用于接收,你看下面这么写对吗?大哥费心了! procedure TFormSpecialist_Imp.FormCreate(Sender: TObject); var q:TADOQuery; begin q:=DataBaseConnection.chaxun; if q.RecordCount>0 then begin while not q.Eof do begin ComboBox1.Items.Add(q.FieldByName('F_province').AsString); q.Next; end; end else begin ShowMessage('省份查询失败,请再试!'); end; end;这么写对吗?改怎么改正?
ADOQuery1是全局对象吗? 否则: function TDataBaseConnection.chaxun:TADOQuery; begin With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select F_PROVINCE from T_ZJK_SF'); Open; end; result:=ADOQuery1; end; ADOQuery1是哪里来的?
在 类中加了 一个 TADOQuery 的组件,这个组件定义的变量。放在Type 中定义的。全文件是这样的:unit DBConn;interfaceuses Windows, Messages, SysUtils, Variants, Classes,Controls, Dialogs, StdCtrls,ExtCtrls, Grids, OleServer, ComObj, DBCtrls, DB, ADODB{ExcelOp,};type TDataBaseConnection = class(TDataModule) ADOCon: TADOConnection; ADOTable1: TADOTable; DataSource1: TDataSource; ADOQuery1: TADOQuery; procedure DataModuleCreate(Sender: TObject); private { Private declarations } public { Public declarations } function chaxun:TADOQuery; end;var DataBaseConnection: TDataBaseConnection;implementation {$R *.dfm}procedure TDataBaseConnection.DataModuleCreate(Sender: TObject); begin ADOCon.ConnectionString:='Provider=MSDAORA.1;Password=ZJK_6610;User ID=HBZJK;Data Source=HBSTA;Persist Security Info=True;'; ADOCon.Connected:= true; end;Type Tarrstr=array of String;function TDataBaseConnection.chaxun:TADOquery; var i:integer; begin With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('Select F_PROVINCE from T_ZJK_SF'); Open; end; result:=ADOQuery1; end;end.在另一个函数定义一个TAODOQuery 变量,用于接收,你看下面这么写对吗?大哥费心了! procedure TFormSpecialist_Imp.FormCreate(Sender: TObject); var q:TADOQuery; begin q:=DataBaseConnection.chaxun; if q.RecordCount>0 then begin while not q.Eof do begin ComboBox1.Items.Add(q.FieldByName('F_province').AsString); q.Next; end; end else begin ShowMessage('省份查询失败,请再试!'); end; end; 这么写对吗?改怎么改正?提示错误,怎么改呢?
但是,如果函数无参数,很难区分 表达式里的函数名 是 表示返回值 还是 递归调用本函数
有了result,就不会有歧义了
result可以返回 数组类型 或 TADOQuery 类型吗?
可以
这么写对吗?
不对该怎么写呢?
Tarrstr=array of String;
function TDataBaseConnection.chaxun:TarrStr;
function TDataBaseConnection.chaxun:TADOQuery;
begin
With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select F_PROVINCE from T_ZJK_SF');
Open;
end;
result:=result;
end;
在另一个函数定义一个TAODOQuery 变量,用于接收,你看下面这么写对吗?大哥费心了!
procedure TFormSpecialist_Imp.FormCreate(Sender: TObject);
var
q:TADOQuery;
begin
q:=DataBaseConnection.chaxun;
if q.RecordCount>0 then
begin
while not q.Eof do
begin
ComboBox1.Items.Add(q.FieldByName('F_province').AsString);
q.Next;
end;
end
else
begin
ShowMessage('省份查询失败,请再试!');
end;
end;
function TDataBaseConnection.chaxun:TADOQuery;
begin
With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select F_PROVINCE from T_ZJK_SF');
Open;
end;
result:=ADOQuery1;
end;
在另一个函数定义一个TAODOQuery 变量,用于接收,你看下面这么写对吗?大哥费心了!
procedure TFormSpecialist_Imp.FormCreate(Sender: TObject);
var
q:TADOQuery;
begin
q:=DataBaseConnection.chaxun;
if q.RecordCount>0 then
begin
while not q.Eof do
begin
ComboBox1.Items.Add(q.FieldByName('F_province').AsString);
q.Next;
end;
end
else
begin
ShowMessage('省份查询失败,请再试!');
end;
end;这么写对吗?改怎么改正?
否则:
function TDataBaseConnection.chaxun:TADOQuery;
begin
With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select F_PROVINCE from T_ZJK_SF');
Open;
end;
result:=ADOQuery1;
end;
ADOQuery1是哪里来的?
Windows, Messages, SysUtils, Variants, Classes,Controls,
Dialogs, StdCtrls,ExtCtrls, Grids, OleServer,
ComObj, DBCtrls, DB, ADODB{ExcelOp,};type
TDataBaseConnection = class(TDataModule)
ADOCon: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function chaxun:TADOQuery;
end;var
DataBaseConnection: TDataBaseConnection;implementation
{$R *.dfm}procedure TDataBaseConnection.DataModuleCreate(Sender: TObject);
begin
ADOCon.ConnectionString:='Provider=MSDAORA.1;Password=ZJK_6610;User ID=HBZJK;Data Source=HBSTA;Persist Security Info=True;';
ADOCon.Connected:= true;
end;Type
Tarrstr=array of String;function TDataBaseConnection.chaxun:TADOquery;
var
i:integer;
begin
With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select F_PROVINCE from T_ZJK_SF');
Open;
end;
result:=ADOQuery1;
end;end.在另一个函数定义一个TAODOQuery 变量,用于接收,你看下面这么写对吗?大哥费心了!
procedure TFormSpecialist_Imp.FormCreate(Sender: TObject);
var
q:TADOQuery;
begin
q:=DataBaseConnection.chaxun;
if q.RecordCount>0 then
begin
while not q.Eof do
begin
ComboBox1.Items.Add(q.FieldByName('F_province').AsString);
q.Next;
end;
end
else
begin
ShowMessage('省份查询失败,请再试!');
end;
end; 这么写对吗?改怎么改正?提示错误,怎么改呢?
在另一个单元中