在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

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

在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的“增加”、“刪除”,這樣用戶界面會更友好些。

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

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

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 啊啊啊国产视频| 亚洲精品成人在线播放| 成人高清在线观看视频| 日韩精品无码一区二区三区免费| 成年在线观看视频| 青青视频免费在线| 一区二区三区四区免费观看| 九九热免费在线观看| 国产一二三四在线视频| 久久久精品麻豆| 午夜免费一区二区| 日本免费观看网站| 中文字幕久久av| 久久精品亚洲天堂| 国产日产欧美一区二区| 黄色小视频大全| 99er在线视频| 国产午夜福利视频在线观看| 国产欧美在线一区| 国产高清视频网站| 美女在线免费视频| 精品少妇人欧美激情在线观看| 欧美黄色免费网址| 欧美日韩在线不卡视频| 一区二区在线免费看| 久久av秘一区二区三区| 男人c女人视频| 91av俱乐部| 久久久一二三四| 日韩在线一级片| 蜜桃福利午夜精品一区| 男人天堂手机在线视频| 成人免费毛片播放| av磁力番号网| 粉嫩虎白女毛片人体| 国产在线观看中文字幕| 欧美在线一区视频| 亚洲精品成人在线播放| 性一交一乱一伧国产女士spa| 啊啊啊一区二区| 性欧美18一19内谢| www.爱色av.com| 国产一二三四五| 久久国产精品国产精品| 人妻激情另类乱人伦人妻| 男女污污的视频| 免费 成 人 黄 色| 久久视频免费在线| 亚洲精品性视频| 可以在线看的黄色网址| 国产乱淫av片杨贵妃| 手机福利在线视频| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 日本丰满少妇黄大片在线观看| 久章草在线视频| 国产婷婷一区二区三区| japanese在线视频| 色婷婷一区二区三区av免费看| 波多野结衣乳巨码无在线| 成人av在线不卡| 精品日韩在线播放| 无套内谢丰满少妇中文字幕| 午夜宅男在线视频| 中文字幕第80页| 无码内射中文字幕岛国片| 亚洲人精品午夜射精日韩| 国内精品国产三级国产99| 肉色超薄丝袜脚交| 久久6免费视频| 韩国一区二区在线播放| 老司机午夜性大片| av在线免费看片| 国产美女视频免费| 亚洲国产精品影视| 青少年xxxxx性开放hg| 免费看av软件| 狠狠噜天天噜日日噜| 欧美一级中文字幕| www插插插无码视频网站| www.国产在线播放| 男人日女人下面视频| 老熟妇仑乱视频一区二区| 欧美午夜aaaaaa免费视频| 天堂中文av在线| 四虎4hu永久免费入口| 国产资源第一页| 成人在线免费观看av| 男女啪啪网站视频| 97超碰人人看| 久久久亚洲国产精品| 日本成人在线免费视频| 久久久久久久高清| www.国产在线视频| 天天干天天爽天天射| 免费观看中文字幕| 国产亚洲精品网站| 日韩在线一区视频| 欧美精品自拍视频| 制服丝袜中文字幕第一页| 免费特级黄色片| av亚洲天堂网| 日韩国产一级片| 亚洲精品免费一区亚洲精品免费精品一区| 欧美一级黄色录像片| 日日摸日日碰夜夜爽av| 日韩欧美中文视频| 国产成人a亚洲精v品无码| 国产又大又长又粗又黄| 日韩国产欧美亚洲| 天天综合五月天| 国产九九热视频| 免费av观看网址| 国产卡一卡二在线| 天堂av在线网站| 国自产拍偷拍精品啪啪一区二区| 777一区二区| 美女网站免费观看视频| 很污的网站在线观看| 在线播放免费视频| 中文字幕第100页| 午夜视频在线瓜伦| 国产午夜福利在线播放| 成人午夜免费在线视频| 国产农村妇女精品久久| 日本xxxx黄色| 午夜免费福利在线| 在线视频日韩一区 | 日韩不卡一二区| 最新中文字幕免费视频| 啊啊啊一区二区| 俄罗斯av网站| a在线视频观看| 精品久久一二三| 国产av天堂无码一区二区三区| 亚洲精品偷拍视频| av电影一区二区三区| 永久av免费在线观看| 欧美专区第二页| 亚洲国产欧美91| 欧美一级爱爱视频| av在线免费观看国产| 女人色极品影院| xxxx18hd亚洲hd捆绑| 婷婷五月综合缴情在线视频| 青草网在线观看| 欧美 日韩精品| 最近中文字幕一区二区| 在线观看岛国av| av电影一区二区三区| a天堂资源在线观看| 黄色一级视频在线播放| 玩弄japan白嫩少妇hd| 国产原创精品在线| 老司机午夜网站| 国产资源在线视频| 国产精品区在线| 久久综合亚洲精品| 免费高清在线观看免费| 日本人69视频| 国内少妇毛片视频| 成人在线观看a| 欧美精品一区二区性色a+v| 久久精品无码中文字幕| 欧美色图另类小说| 毛片毛片毛片毛| 日韩精品一区二区三区久久| 中文av一区二区三区| 欧美午夜性视频| www.cao超碰| www.com毛片| 午夜啪啪免费视频| 成人在线激情网| 无码人妻少妇伦在线电影| 一区二区在线播放视频| 国产日韩欧美大片| 久久久久国产一区| 日韩中文字幕在线视频观看 | 色婷婷一区二区三区av免费看| 一级 黄 色 片一| 国产一区视频免费观看| www.亚洲成人网| 在线能看的av网站| 国产福利视频在线播放| 91免费国产精品| 亚洲五月激情网| 国产又大又黄又粗又爽| 女人喷潮完整视频| 一本久道高清无码视频| 在线播放免费视频| 久久久久久久久久久久91| 青青青国产在线观看| 国产青草视频在线观看| 亚洲天堂一区二区在线观看| 91在线视频观看免费| 国产中文字幕在线免费观看| 青青青在线观看视频| 国产人妻互换一区二区| 91xxx视频| 草草草视频在线观看| 香港三级日本三级a视频|