国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

在Delphi中完成多重查詢

在Delphi中完成多重查詢

更新時間:2020-01-14 文章作者:未知 信息來源:網絡 閱讀次數:

---- 在數據庫管理系統中,查詢的方式主要有以下幾種:1.固定字段的單一查詢。2.可選擇字段的單一查詢。3.限制若干個字段的多重查詢。4.可任意選擇字段的多重查詢。前兩種也稱為單條件查詢,后兩種稱為多重(或多條件)查詢。在實際中,系統(實為程序員)提供給用戶的查詢方式以單條件查詢為多,即使提供了多條件方式,通常也只有兩或三個條件,因為編寫多重查詢是一項非常棘手且煩瑣的事情。實際上,利用表格Grid功能,就能輕松地實現多重查詢。本人以Delphi為例,介紹具體的實現方法。這種思想,也同樣適合于其他的編程語言(如Visual Foxpro)。

----程序主要按如下三個功能來實現:

設置DBGrid;
生成查詢條件(語句);
執行查詢。
----具體步驟如下:

----⑴新建一工程文件,取名為PDBGrid.dpr;

----⑵給單元文件取名為UDBGrid.pas,在其相應的表單(取名為frmDBGrid)中添加如下控件并編寫相應的代碼:



----其中Table2(記錄查詢條件的數據集)對應的表 CxComm.db的結構定義如下:



----表單的FormActivate事件代碼如下:

procedure TfrmDBGrid.FormActivate(Sender: TObject);
begin
if Table2.Active then Table2.Close;
Table2.EmptyTable; //清空條件
Table1.Open;
Table2.Open;
end;

Button1(設置DBGrid)的Click事件代碼如下:
procedure TfrmDBGrid.Button1Click(SenderTObject);
begin
MySetDBGrid(Table1,DBGrid2);
// MySetDBGrid為自定義過程
//以Table1為數據源,DBGrid2為記錄篩選(查詢)條件的表格
end;

Button2(生成查詢)的Click事件代碼如下:
procedureTfrmDBGrid.Button2Click(Sender:TObject);
begin
if MyCreate_SQL(Table1,Table2,Query1)
//MyCreate_SQL為自定義函數
//由指定數據來源表生成SQL,存入Query1
then begin
Memo1.Lines.Clear;
Memo1.Lines:=(Query1.SQL);
Memo1.Modified:=false;
end
end;

Button3(執行查詢)的Click事件代碼如下:
procedureTfrmDBGrid.Button3Click(Sender:TObject);
begin
with Query1,SQL do
begin
Close;
if Memo1.Modified //用戶可修改SQL語句
then SQL:=Memo1.Lines;
try
ExecSQL;
Open;
except //捕捉錯誤并處理
begin
MessageBeep(0);
Application.MessageBox(‘錯誤的SQL語句!',
‘確認',MB_OK+MB_ICONSTOP);
Close;
end;
end //try
end;
end; //執行SQL

----自定義過程MySetDBGrid (設置DBGrid)的代碼如下:

procedure TfrmDBGrid.MySetDBGrid
(sTable:TTable;tjDBGrid:TDBGrid);
//參數說明:sTable為數據(包括字段、記錄)來源表
// tjDBGrid為記錄篩選(查詢)條件的表格
var i:byte;
begin
//設置查詢項目
if not sTable.Active then sTable.Open;
tjDBGrid.Columns[0].PickList.Clear;
for i:=0 to sTable.FieldCount-1 do
//記錄數(即字段數)
begin
tjDBGrid.Columns[0].PickList.Add
(sTable.Fields[i].FieldName);
end; //for
//設置關系(=,<>,>,>=,<,<=) 及邏輯(AND,OR)
tjDBGrid.Columns[1].PickList.Text:=‘='+#13+
‘<>'+#13+‘>'+#13+‘>='+#13+‘<'+#13+
‘<=';tjDBGrid.Columns[3].PickList.Text:=‘AND'+#13+
‘OR';
end;//設置DBGrid

----自定義函數MyCreate_SQL (生成查詢)的代碼如下:

function TfrmDBGrid.MyCreate_SQL
(sTable,tjTable:TTable;tjQuery:TQuery):boolean;
//參數說明:sTable為數據(包括字段、記錄)來源表
// tjTable為記錄篩選(查詢)條件的表
// tjQuery記錄SQL語句
var i:byte;
lsDate:TDate; //檢測日期格式用
sLj,sFilter,sFieldName:string;
//分別表示:邏輯關系、篩選條件、字段名
begin
Result:=true;
//生成“篩選條件"語句
with tjQuery,SQL do
begin Close;
Clear;
DatabaseName:=sTable.DatabaseName;
//設置Query1的別名
Add(‘Select * from '+sTable.TableName);
end;
with tjTable do //查詢(篩選)條件表
begin
if not Active then Open;
if IsEmpty
then begin
Application.MessageBox(‘未選擇篩選條件!',
‘確定',MB_OK+MB_ICONEXCLAMATION);
Exit;
end;
tjQuery.SQL.Add(‘Where ');//含有篩選條件
sFilter:=‘'; //臨時記錄篩選條件
First;
for i:=0 to RecordCount-1 do
begin
sLj:=Fields[3].AsString; //邏輯關系AND,OR
//(字段名0>1實際值2)
sFilter:=sFilter+‘(';
sFilter:=sFilter+Fields[0].AsString+
Fields[1].AsString;
sFieldName:=Fields[0].AsString;
//取第1列的字段名
case Table1.FieldByName(sFieldName).DataType of
ftString: begin //字符型處理
sFilter:=sFilter+“”+Fields[2].AsString+“”
//第2列為關系
end;
ftFloat, //浮點型處理
ftAutoInc, //自增型
ftSmallInt, //短整型
ftInteger, //整型
ftCurrency: begin //貨幣型
sFilter:=sFilter+Fields[2].AsString;
end;
ftDate: begin //日期型處理
try
lsDate:=StrToDate(Fields[2].AsString);
sFilter:=sFilter+“”+FormatDateTime
(‘mm/dd/yyyy',StrToDate(Fields[2].AsString))+“”;
except
Application.MessageBox(‘錯誤的日期格式!’,
‘確認',MB_OK+MB_ICONSTOP);
Result:=false; //返回錯誤標志
break;
end;//try 日期格式判斷
end;
//此處可增加對其他類型數據的處理
end;//case
sFilter:=sFilter+‘)';
if sLj<>‘'
then begin
if RecNo<>RecordCount //且“非最后行"的記錄
then sFilter:=sFilter+Fields[3].AsString;
//And|Or;
end
else break;
Next
end;
end; //not IsEmpty(篩選)非空
tjQuery.SQL.Add(sFilter); //保存查詢條件
end; //處理篩選條件

----另外,需要進行如下說明:

...
Type
...
procedure MySetDBGrid(sTable:TTable;
tjDBGrid:TDBGrid);
function MyCreate_SQL(sTable,tjTable:
TTable;tjQuery:TQuery):boolean;
private
{ Private declarations }
...

----值得說明的是,⑴為簡化程序,邏輯關系只提供了AND 和OR兩種,但為了允許用戶修改SQL語句,如:在多條件之間增加括號來改變運算順序等,增加了Memo控件;⑵在實際系統中,為方便用戶的操作,可增加幾個Button(按鈕),功能分別是對Table2的“增加”、“刪除”,這樣用戶界面會更友好些。

----利用這種方法來設置查詢,條件個數是無限制的,且在屏幕上不會占據太大的空間,程序員實現起來要簡單得多了。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        一区精品在线播放| 欧美天天综合网| 国产一区二区三区在线看麻豆| 69久久夜色精品国产69蝌蚪网| 五月天亚洲婷婷| 欧美一卡二卡三卡| 国产美女视频91| 中文字幕视频一区| 在线成人免费观看| 国产aⅴ精品一区二区三区色成熟| 中文字幕免费不卡| 欧美日韩国产高清一区二区三区| 麻豆精品久久精品色综合| 久久久99精品免费观看| 91麻豆免费观看| 狂野欧美性猛交blacked| 国产精品电影一区二区| 91精品国模一区二区三区| 成人免费视频视频| 日韩在线一区二区| 欧美韩日一区二区三区四区| 欧美日韩在线综合| 成人免费福利片| 久久不见久久见免费视频1| 国产精品每日更新| 91精品国产全国免费观看| 暴力调教一区二区三区| 蜜臀va亚洲va欧美va天堂| 亚洲欧美日韩人成在线播放| 日韩欧美www| 欧美伊人久久大香线蕉综合69| 精品亚洲porn| 亚洲成人免费视| 一色桃子久久精品亚洲| 亚洲精品一区二区三区福利 | 精品久久久久久久一区二区蜜臀| 99久久伊人久久99| 极品少妇xxxx精品少妇偷拍| 亚洲香蕉伊在人在线观| 国产精品国模大尺度视频| 欧美一级日韩免费不卡| 91麻豆免费观看| 成人精品在线视频观看| 国产一区二区精品久久99| 日产国产高清一区二区三区| 亚洲免费伊人电影| 中文字幕国产精品一区二区| 久久久久久一二三区| 欧美v日韩v国产v| 日韩一区二区影院| 欧美肥妇free| 欧美乱妇20p| 欧美剧情电影在线观看完整版免费励志电影| 成人久久视频在线观看| 高清久久久久久| 国产麻豆欧美日韩一区| 久久不见久久见中文字幕免费| 天天色 色综合| 亚洲电影欧美电影有声小说| 国产精品久久久久三级| 亚洲精品一区二区三区精华液| 日韩欧美亚洲国产精品字幕久久久 | 天堂一区二区在线| 国产欧美日韩久久| 久久久久久久久久电影| 久久综合久久综合久久综合| 欧美一级日韩免费不卡| 欧美大度的电影原声| 日韩精品一区二区三区swag| 日韩欧美国产一区二区在线播放 | 久久久久久久综合狠狠综合| 精品奇米国产一区二区三区| 欧美一区二区三区公司| 99视频一区二区| 免费观看久久久4p| 日本亚洲天堂网| 日本aⅴ亚洲精品中文乱码| 日本vs亚洲vs韩国一区三区 | 欧美一级在线观看| 日韩欧美国产一区二区三区| 精品粉嫩超白一线天av| 国产精品久久久久久福利一牛影视| 日韩一区在线免费观看| 亚洲精品国产一区二区精华液 | 91麻豆精品在线观看| 欧美电影在哪看比较好| 久久久亚洲欧洲日产国码αv| 国产精品国产三级国产三级人妇 | 国产精品亚洲一区二区三区在线 | 欧美三电影在线| 91精品视频网| 国产日产亚洲精品系列| 亚洲美女电影在线| 日韩国产一二三区| 国产激情一区二区三区| 欧美伊人精品成人久久综合97| 色吧成人激情小说| 亚洲国产你懂的| 美腿丝袜亚洲三区| 粗大黑人巨茎大战欧美成人| 99在线精品视频| 欧美日韩一区二区在线观看| 久久先锋资源网| 亚洲va在线va天堂| 国产一区不卡视频| 欧美自拍丝袜亚洲| 国产亚洲欧洲一区高清在线观看| 日韩一区中文字幕| 国产自产高清不卡| 欧美日韩一本到| 亚洲特黄一级片| 国产精品99久| gogo大胆日本视频一区| 色综合色综合色综合| 欧美成人一级视频| 亚洲一区免费观看| hitomi一区二区三区精品| 精品久久久久久久久久久久久久久| 亚洲欧洲国产专区| 国产激情一区二区三区四区| 91精品国产一区二区三区| 亚洲狠狠爱一区二区三区| 99久久综合国产精品| 国产精品情趣视频| 成人午夜伦理影院| 久久久亚洲高清| 国内不卡的二区三区中文字幕| 欧美日韩精品一区二区三区| 一区二区高清在线| 欧美色图片你懂的| 亚洲国产视频一区| 欧美日韩精品一区二区天天拍小说| 亚洲另类中文字| 欧美性感一类影片在线播放| 亚洲一区二区视频| 欧美日韩精品一区二区三区| 亚洲高清免费观看高清完整版在线观看| av一区二区三区在线| 亚洲美女一区二区三区| 欧美在线免费观看视频| 亚洲国产精品一区二区久久| 欧美日韩精品三区| 午夜av电影一区| 日韩色视频在线观看| 精品无人区卡一卡二卡三乱码免费卡| 日韩午夜小视频| 国产精品18久久久久久vr| 国产精品拍天天在线| 一本一道波多野结衣一区二区 | 精品美女一区二区三区| 蜜臀精品久久久久久蜜臀| 精品国产露脸精彩对白 | 欧美另类高清zo欧美| 久久精品国产99国产| 国产午夜精品一区二区三区视频 | 精品少妇一区二区三区| 国产九色sp调教91| 椎名由奈av一区二区三区| 欧美三级中文字| 国模冰冰炮一区二区| 亚洲色图制服诱惑 | 欧美二区三区91| 精品一区二区三区久久| 国产精品毛片无遮挡高清| 欧美日韩日日摸| 国产一区二区三区观看| 亚洲免费资源在线播放| 日韩精品专区在线影院重磅| 99久久综合国产精品| 轻轻草成人在线| 亚洲天堂精品视频| 26uuu国产一区二区三区| 一本在线高清不卡dvd| 国产一区二区三区四区五区美女| 亚洲免费av网站| 日韩欧美国产综合一区| 色香蕉成人二区免费| 国产成人在线看| 蜜桃视频一区二区三区| 亚洲精品一二三四区| 国产丝袜在线精品| 欧美视频一区二区三区| 成人黄色777网| 久久精品国产网站| 亚洲午夜精品网| 中文字幕在线观看不卡| 精品日韩一区二区三区| 欧美日韩中文一区| av在线不卡免费看| 国产精品88888| 国产在线精品一区二区夜色| 亚洲国产欧美另类丝袜| 亚洲猫色日本管| 亚洲视频一二三| 欧美经典一区二区| 久久精品欧美一区二区三区麻豆| 91精品国产一区二区| 91麻豆精品国产91久久久使用方法 | 日韩精品一卡二卡三卡四卡无卡| 中文字幕在线视频一区|