//这是我写的一个问题查询系统的一部分, //主要涉及用ADO动态创建数据库和访问数据库 //在数据模块DM上扔个TADOQuery控件ADOQ_Any上去 unit UnitMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, StdCtrls, DB, DBTables, DBCtrls, Mask, Danhint, ComObj, ADODB,Buttons, DynamicSkinForm, SkinData, SkinCtrls;type TfrmMain = class(TForm) Panel1: TPanel; Panel2: TPanel; StatusBar1: TStatusBar; Panel3: TPanel; edtSearch: TEdit; GroupBox1: TGroupBox; rKey: TRadioButton; rAll: TRadioButton; PB: TProgressBar; Panel4: TPanel; ScrollBox1: TScrollBox; dsView: TDataSource; Label1: TLabel; DBEdit1: TDBEdit; Label2: TLabel; DBEdit2: TDBEdit; Label3: TLabel; DBEdit3: TDBEdit; Label4: TLabel; DBEdit4: TDBEdit; Label5: TLabel; DBEdit5: TDBEdit; Label6: TLabel; DBMemo1: TDBMemo; Label7: TLabel; Label8: TLabel; DBEdit6: TDBEdit; Label9: TLabel; DBEdit7: TDBEdit; GroupBox2: TGroupBox; cbxSort: TComboBox; chkSort: TCheckBox; LV: TListView; Splitter1: TSplitter; DanHint1: TDanHint; DBMemo2: TDBMemo; spSkinData1: TspSkinData; spDynamicSkinForm1: TspDynamicSkinForm; btnSearch: TspSkinButton; btnInsert: TspSkinButton; btnPrint: TspSkinButton; btnPw: TspSkinButton; btnHelp: TspSkinButton; btnAbout: TspSkinButton; btnExit: TspSkinButton; procedure FormShow(Sender: TObject); procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean); procedure ScrollBox1CanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); procedure btnExitClick(Sender: TObject); procedure btnSearchClick(Sender: TObject); procedure chkSortClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); procedure btnInsertClick(Sender: TObject); procedure btnPrintClick(Sender: TObject); procedure btnAboutClick(Sender: TObject); procedure btnHelpClick(Sender: TObject); procedure btnPwClick(Sender: TObject); private function CreateMDB:boolean; { Private declarations } public { Public declarations } end; const //字典表 计费 c_data='CREATE TABLE [data](' +'[Id] autoincrement,' +'[Bh] varchar(10),'//编号 +'[Sorts] varchar(20),'// +'[Q_Date] DateTime,'// +'[Q_Name] varchar(20),'// +'[Keys] varchar(50),'// +'[Question] varchar(240),'// +'[Answer] memo,'// +'[A_Date] DateTime,'// +'[A_Name] varchar(20))';c_passwd='CREATE TABLE [passwd](' +'[Id] varchar(10),' +'[Pw] varchar(20))';// var frmMain: TfrmMain; mdbFileName:string;implementationuses UnitDm, UnitEdit, UnitPrint, UnitAbout, UnitHelp, UnitInputPw, UnitChangPw;{$R *.dfm}procedure TfrmMain.FormShow(Sender: TObject); var i:integer; begin DM.ADOQ_Any.Close; DM.ADOQ_Any.SQL.Clear; DM.ADOQ_Any.SQL.Add('select distinct sorts from data'); DM.ADOQ_Any.Open; if DM.ADOQ_Any.RecordCount>0 then begin for i:=1 to DM.ADOQ_Any.RecordCount do begin cbxSort.Items.Add(DM.ADOQ_Any.Fields.Fields[0].AsString); DM.ADOQ_Any.Next; end; cbxSort.ItemIndex:=0; end;DM.at_Data.Open; DM.at_Data.Filter:='id=1';DM.ADOQ_Any.Close; DM.ADOQ_Any.SQL.Text:='select pw from passwd where id='+QuotedStr('User'); DM.ADOQ_Any.Open; if DM.ADOQ_Any.RecordCount>0 then begin if (DM.ADOQ_Any.Fields.Fields[0].AsDateTime>now+1) or(DM.ADOQ_Any.Fields.Fields[0].AsDateTime<now-31) then begin Application.MessageBox('程序发生异常错误,请与我联系:[email protected]','提示',MB_OK+MB_ICONWARNING); Application.Terminate; end; end else begin Application.MessageBox('程序发生异常错误,请与我联系:[email protected]','提示',MB_OK+MB_ICONWARNING); Application.Terminate; end;try frmInputPw:=TfrmInputPw.Create(nil); frmInputPw.ShowModal; frmInputPw.Free; except frmInputPw.Free; end;end;procedure TfrmMain.Splitter1CanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean); begin if NewSize<50 then Accept:=false; end;procedure TfrmMain.ScrollBox1CanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); begin if NewHeight<20 then Resize:=false; end;procedure TfrmMain.btnExitClick(Sender: TObject); begin Close; end;procedure TfrmMain.btnSearchClick(Sender: TObject); var i:integer; li:TListItem; begin LV.Items.Clear;if not DM.at_Data.Active then DM.at_Data.Open; DM.ADOQ_Any.Close; DM.ADOQ_Any.SQL.Clear;if rKey.Checked then begin DM.ADOQ_Any.SQL.Add('select id,question from data where keys like :key '); DM.ADOQ_Any.Parameters.ParamByName('key').DataType:=ftString; DM.ADOQ_Any.Parameters.ParamValues['key']:='%'+edtSearch.Text+'%'; if chkSort.Checked and (cbxSort.Text<>'') then begin DM.ADOQ_Any.SQL.Add('and sorts like :sort'); DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString; DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%'; end; end;
if rAll.Checked then begin DM.ADOQ_Any.SQL.Add('select id,question from data where question like :key '); DM.ADOQ_Any.Parameters.ParamByName('key').DataType:=ftString; DM.ADOQ_Any.Parameters.ParamValues['key']:='%'+edtSearch.Text+'%'; if chkSort.Checked and (cbxSort.Text<>'') then begin DM.ADOQ_Any.SQL.Add('and sorts like :sort'); DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString; DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%'; end; end; DM.ADOQ_Any.Open; if DM.ADOQ_Any.RecordCount=0 then Application.MessageBox('对不起,没有找到该问题。','提示') else begin Lv.Items.Clear; for i:=1 to DM.ADOQ_Any.RecordCount do begin li:=Lv.Items.Insert(i); li.Caption:=IntToStr(i); li.SubItems.Add(DM.ADOQ_Any.Fields.Fields[1].AsString); li.SubItems.Add(DM.ADOQ_Any.Fields.Fields[0].AsString); DM.ADOQ_Any.Next; end; end;end;procedure TfrmMain.chkSortClick(Sender: TObject); begin cbxSort.Enabled:=chkSort.Checked; end;procedure TfrmMain.FormCreate(Sender: TObject); var Path: String; begin Path := ExtractFilePath(ParamStr(0)); spSkinData1.LoadFromFile(Path + 'skin\skin.ini');edtSearch.Text:=''; cbxSort.Text:=''; mdbFileName:=ExtractFilePath(Application.ExeName)+'wt_data';if not FileExists(mdbFileName) then if not CreateMDB then Application.Terminate;DM.ADOConnection1.Close; DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+mdbFileName; DM.ADOConnection1.Open;end;procedure TfrmMain.LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); begin DM.at_Data.Filter:='id='+item.SubItems[1];end;procedure TfrmMain.btnInsertClick(Sender: TObject); var i:integer; begin try frmEdit:=TfrmEdit.Create(nil); DM.ADOQ_Any.Close; DM.ADOQ_Any.SQL.Clear; DM.ADOQ_Any.SQL.Add('select distinct sorts from data'); DM.ADOQ_Any.Open; if DM.ADOQ_Any.RecordCount>0 then begin for i:=1 to DM.ADOQ_Any.RecordCount do begin frmEdit.dcbSort.Items.Add(DM.ADOQ_Any.Fields.Fields[0].AsString); DM.ADOQ_Any.Next; end; end; frmEdit.ShowModal; frmEdit.Free; except frmEdit.Free; end;end;procedure TfrmMain.btnPrintClick(Sender: TObject); begin frmPrint.QuickRep1.Preview; end;procedure TfrmMain.btnAboutClick(Sender: TObject); begin try frmAbout:=TfrmAbout.Create(nil); frmAbout.ShowModal; frmAbout.Free; except frmAbout.Free; end;end;procedure TfrmMain.btnHelpClick(Sender: TObject); begin try frmHelp:=TfrmHelp.Create(nil); frmHelp.ShowModal; frmHelp.Free; except frmHelp.Free; end;end;function TfrmMain.CreateMDB: boolean; var CreateAccess:OleVariant; begin try CreateAccess:=CreateOleObject('ADOX.Catalog'); //CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mdbFileName); CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mdbFileName); DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+mdbFileName; //创建表 DM.ADOQ_Any.Close; DM.ADOQ_Any.SQL.Text:=c_data; DM.ADOQ_Any.ExecSQL; DM.ADOQ_Any.SQL.Text:=c_Passwd; DM.ADOQ_Any.ExecSQL; DM.ADOQ_Any.SQL.Text:='insert into passwd values(:Id,:Pw)'; DM.ADOQ_Any.Parameters.ParamValues['Id']:='User'; DM.ADOQ_Any.Parameters.ParamValues['Pw']:=DateToStr(now); DM.ADOQ_Any.ExecSQL; DM.ADOQ_Any.SQL.Text:='insert into passwd values(:Id,:Pw)'; DM.ADOQ_Any.Parameters.ParamValues['Id']:='system'; DM.ADOQ_Any.Parameters.ParamValues['Pw']:='system'; DM.ADOQ_Any.ExecSQL; result:=true; except result:=false; Application.MessageBox('无法创建数据库。','提示',MB_OK+MB_ICONWARNING); end; end;procedure TfrmMain.btnPwClick(Sender: TObject); begin try frmChangPw:=TfrmChangPw.Create(nil); frmChangPw.ShowModal; frmChangPw.Free; except frmChangPw.Free; end;end;end.
能请教一下楼上的,下面这两段代码什么意思啊 if (DM.ADOQ_Any.Fields.Fields[0].AsDateTime>now+1) or(DM.ADOQ_Any.Fields.Fields[0].AsDateTime<now-31) 和 DM.ADOQ_Any.SQL.Add('and sorts like :sort'); DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString; DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%'; 多谢了啊另外提一点建议:对于同一个对象也可以用with ..do
if (DM.ADOQ_Any.Fields.Fields[0].AsDateTime>now+1) or(DM.ADOQ_Any.Fields.Fields[0].AsDateTime<now-31)这个是限制使用时间为一个月。 DM.ADOQ_Any.SQL.Add('and sorts like :sort'); DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString; DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%'; 这是动态加了个参数,并对其赋值。用with .. do 是可以少写代码,但却不易阅读。
DELPHI安装目录下面有DEMO目录,里面有你要的,怎么会找不到?
DELPHI安装目录下面有DEMO目录,里面有你要的,怎么会找不到?
//主要涉及用ADO动态创建数据库和访问数据库
//在数据模块DM上扔个TADOQuery控件ADOQ_Any上去
unit UnitMain;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, DB, DBTables, DBCtrls, Mask, Danhint,
ComObj, ADODB,Buttons, DynamicSkinForm, SkinData, SkinCtrls;type
TfrmMain = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
StatusBar1: TStatusBar;
Panel3: TPanel;
edtSearch: TEdit;
GroupBox1: TGroupBox;
rKey: TRadioButton;
rAll: TRadioButton;
PB: TProgressBar;
Panel4: TPanel;
ScrollBox1: TScrollBox;
dsView: TDataSource;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBMemo1: TDBMemo;
Label7: TLabel;
Label8: TLabel;
DBEdit6: TDBEdit;
Label9: TLabel;
DBEdit7: TDBEdit;
GroupBox2: TGroupBox;
cbxSort: TComboBox;
chkSort: TCheckBox;
LV: TListView;
Splitter1: TSplitter;
DanHint1: TDanHint;
DBMemo2: TDBMemo;
spSkinData1: TspSkinData;
spDynamicSkinForm1: TspDynamicSkinForm;
btnSearch: TspSkinButton;
btnInsert: TspSkinButton;
btnPrint: TspSkinButton;
btnPw: TspSkinButton;
btnHelp: TspSkinButton;
btnAbout: TspSkinButton;
btnExit: TspSkinButton;
procedure FormShow(Sender: TObject);
procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure ScrollBox1CanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
procedure btnExitClick(Sender: TObject);
procedure btnSearchClick(Sender: TObject);
procedure chkSortClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure LVSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure btnInsertClick(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure btnAboutClick(Sender: TObject);
procedure btnHelpClick(Sender: TObject);
procedure btnPwClick(Sender: TObject);
private
function CreateMDB:boolean; { Private declarations }
public
{ Public declarations }
end;
const
//字典表 计费
c_data='CREATE TABLE [data]('
+'[Id] autoincrement,'
+'[Bh] varchar(10),'//编号
+'[Sorts] varchar(20),'//
+'[Q_Date] DateTime,'//
+'[Q_Name] varchar(20),'//
+'[Keys] varchar(50),'//
+'[Question] varchar(240),'//
+'[Answer] memo,'//
+'[A_Date] DateTime,'//
+'[A_Name] varchar(20))';c_passwd='CREATE TABLE [passwd]('
+'[Id] varchar(10),'
+'[Pw] varchar(20))';//
var
frmMain: TfrmMain;
mdbFileName:string;implementationuses UnitDm, UnitEdit, UnitPrint, UnitAbout, UnitHelp, UnitInputPw,
UnitChangPw;{$R *.dfm}procedure TfrmMain.FormShow(Sender: TObject);
var
i:integer;
begin
DM.ADOQ_Any.Close;
DM.ADOQ_Any.SQL.Clear;
DM.ADOQ_Any.SQL.Add('select distinct sorts from data');
DM.ADOQ_Any.Open;
if DM.ADOQ_Any.RecordCount>0 then
begin
for i:=1 to DM.ADOQ_Any.RecordCount do
begin
cbxSort.Items.Add(DM.ADOQ_Any.Fields.Fields[0].AsString);
DM.ADOQ_Any.Next;
end;
cbxSort.ItemIndex:=0;
end;DM.at_Data.Open;
DM.at_Data.Filter:='id=1';DM.ADOQ_Any.Close;
DM.ADOQ_Any.SQL.Text:='select pw from passwd where id='+QuotedStr('User');
DM.ADOQ_Any.Open;
if DM.ADOQ_Any.RecordCount>0 then
begin
if (DM.ADOQ_Any.Fields.Fields[0].AsDateTime>now+1)
or(DM.ADOQ_Any.Fields.Fields[0].AsDateTime<now-31)
then begin
Application.MessageBox('程序发生异常错误,请与我联系:[email protected]','提示',MB_OK+MB_ICONWARNING);
Application.Terminate;
end;
end else
begin
Application.MessageBox('程序发生异常错误,请与我联系:[email protected]','提示',MB_OK+MB_ICONWARNING);
Application.Terminate;
end;try
frmInputPw:=TfrmInputPw.Create(nil);
frmInputPw.ShowModal;
frmInputPw.Free;
except
frmInputPw.Free;
end;end;procedure TfrmMain.Splitter1CanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize<50 then Accept:=false;
end;procedure TfrmMain.ScrollBox1CanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
if NewHeight<20 then Resize:=false;
end;procedure TfrmMain.btnExitClick(Sender: TObject);
begin
Close;
end;procedure TfrmMain.btnSearchClick(Sender: TObject);
var
i:integer;
li:TListItem;
begin
LV.Items.Clear;if not DM.at_Data.Active then
DM.at_Data.Open; DM.ADOQ_Any.Close;
DM.ADOQ_Any.SQL.Clear;if rKey.Checked then
begin
DM.ADOQ_Any.SQL.Add('select id,question from data where keys like :key ');
DM.ADOQ_Any.Parameters.ParamByName('key').DataType:=ftString;
DM.ADOQ_Any.Parameters.ParamValues['key']:='%'+edtSearch.Text+'%';
if chkSort.Checked and (cbxSort.Text<>'') then
begin
DM.ADOQ_Any.SQL.Add('and sorts like :sort');
DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString;
DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%';
end;
end;
if rAll.Checked then
begin
DM.ADOQ_Any.SQL.Add('select id,question from data where question like :key ');
DM.ADOQ_Any.Parameters.ParamByName('key').DataType:=ftString;
DM.ADOQ_Any.Parameters.ParamValues['key']:='%'+edtSearch.Text+'%';
if chkSort.Checked and (cbxSort.Text<>'') then
begin
DM.ADOQ_Any.SQL.Add('and sorts like :sort');
DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString;
DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%';
end;
end; DM.ADOQ_Any.Open;
if DM.ADOQ_Any.RecordCount=0 then
Application.MessageBox('对不起,没有找到该问题。','提示')
else begin
Lv.Items.Clear; for i:=1 to DM.ADOQ_Any.RecordCount do
begin
li:=Lv.Items.Insert(i);
li.Caption:=IntToStr(i);
li.SubItems.Add(DM.ADOQ_Any.Fields.Fields[1].AsString);
li.SubItems.Add(DM.ADOQ_Any.Fields.Fields[0].AsString);
DM.ADOQ_Any.Next;
end;
end;end;procedure TfrmMain.chkSortClick(Sender: TObject);
begin
cbxSort.Enabled:=chkSort.Checked;
end;procedure TfrmMain.FormCreate(Sender: TObject);
var
Path: String;
begin
Path := ExtractFilePath(ParamStr(0));
spSkinData1.LoadFromFile(Path + 'skin\skin.ini');edtSearch.Text:='';
cbxSort.Text:='';
mdbFileName:=ExtractFilePath(Application.ExeName)+'wt_data';if not FileExists(mdbFileName) then
if not CreateMDB then Application.Terminate;DM.ADOConnection1.Close;
DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+mdbFileName;
DM.ADOConnection1.Open;end;procedure TfrmMain.LVSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
DM.at_Data.Filter:='id='+item.SubItems[1];end;procedure TfrmMain.btnInsertClick(Sender: TObject);
var
i:integer;
begin
try
frmEdit:=TfrmEdit.Create(nil);
DM.ADOQ_Any.Close;
DM.ADOQ_Any.SQL.Clear;
DM.ADOQ_Any.SQL.Add('select distinct sorts from data');
DM.ADOQ_Any.Open;
if DM.ADOQ_Any.RecordCount>0 then
begin
for i:=1 to DM.ADOQ_Any.RecordCount do
begin
frmEdit.dcbSort.Items.Add(DM.ADOQ_Any.Fields.Fields[0].AsString);
DM.ADOQ_Any.Next;
end;
end;
frmEdit.ShowModal;
frmEdit.Free;
except
frmEdit.Free;
end;end;procedure TfrmMain.btnPrintClick(Sender: TObject);
begin
frmPrint.QuickRep1.Preview;
end;procedure TfrmMain.btnAboutClick(Sender: TObject);
begin
try
frmAbout:=TfrmAbout.Create(nil);
frmAbout.ShowModal;
frmAbout.Free;
except
frmAbout.Free;
end;end;procedure TfrmMain.btnHelpClick(Sender: TObject);
begin
try
frmHelp:=TfrmHelp.Create(nil);
frmHelp.ShowModal;
frmHelp.Free;
except
frmHelp.Free;
end;end;function TfrmMain.CreateMDB: boolean;
var
CreateAccess:OleVariant;
begin
try
CreateAccess:=CreateOleObject('ADOX.Catalog');
//CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mdbFileName);
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mdbFileName); DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+mdbFileName; //创建表
DM.ADOQ_Any.Close;
DM.ADOQ_Any.SQL.Text:=c_data;
DM.ADOQ_Any.ExecSQL; DM.ADOQ_Any.SQL.Text:=c_Passwd;
DM.ADOQ_Any.ExecSQL; DM.ADOQ_Any.SQL.Text:='insert into passwd values(:Id,:Pw)';
DM.ADOQ_Any.Parameters.ParamValues['Id']:='User';
DM.ADOQ_Any.Parameters.ParamValues['Pw']:=DateToStr(now);
DM.ADOQ_Any.ExecSQL; DM.ADOQ_Any.SQL.Text:='insert into passwd values(:Id,:Pw)';
DM.ADOQ_Any.Parameters.ParamValues['Id']:='system';
DM.ADOQ_Any.Parameters.ParamValues['Pw']:='system';
DM.ADOQ_Any.ExecSQL; result:=true;
except
result:=false;
Application.MessageBox('无法创建数据库。','提示',MB_OK+MB_ICONWARNING);
end;
end;procedure TfrmMain.btnPwClick(Sender: TObject);
begin
try
frmChangPw:=TfrmChangPw.Create(nil);
frmChangPw.ShowModal;
frmChangPw.Free;
except
frmChangPw.Free;
end;end;end.
if (DM.ADOQ_Any.Fields.Fields[0].AsDateTime>now+1)
or(DM.ADOQ_Any.Fields.Fields[0].AsDateTime<now-31)
和
DM.ADOQ_Any.SQL.Add('and sorts like :sort');
DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString;
DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%';
多谢了啊另外提一点建议:对于同一个对象也可以用with ..do
or(DM.ADOQ_Any.Fields.Fields[0].AsDateTime<now-31)这个是限制使用时间为一个月。 DM.ADOQ_Any.SQL.Add('and sorts like :sort');
DM.ADOQ_Any.Parameters.ParamByName('sort').DataType:=ftString;
DM.ADOQ_Any.Parameters.ParamValues['sort']:='%'+cbxSort.Text+'%';
这是动态加了个参数,并对其赋值。用with .. do 是可以少写代码,但却不易阅读。