国产午夜成人免费看片无遮挡_日本免费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>

        亚洲国产一区二区视频| av高清久久久| 欧美性感一区二区三区| eeuss鲁一区二区三区| 久久久久久久久久电影| 国产日韩欧美a| 中文字幕一区av| 日韩成人免费电影| 国产成人精品综合在线观看| 99精品欧美一区二区蜜桃免费| 欧美性一二三区| 天天综合日日夜夜精品| 国产成a人亚洲精品| 欧美日韩激情一区二区三区| 精品国产百合女同互慰| 亚洲人成网站影音先锋播放| 日韩av一级电影| 2024国产精品视频| 亚洲gay无套男同| 91影视在线播放| 久久精品一区二区| 久99久精品视频免费观看| 91丝袜高跟美女视频| 一级做a爱片久久| 岛国av在线一区| 久久久久久99久久久精品网站| 成人久久18免费网站麻豆| 亚洲黄色小视频| 日本高清不卡一区| 欧美国产乱子伦| 国产米奇在线777精品观看| 欧美欧美欧美欧美首页| 国产一区二区按摩在线观看| 亚洲综合在线五月| 国产嫩草影院久久久久| 欧美精品色一区二区三区| 一区二区三区免费在线观看| 日韩欧美国产午夜精品| 丝袜亚洲精品中文字幕一区| 欧美天天综合网| 国产成人啪免费观看软件| 日韩中文字幕区一区有砖一区 | 91日韩在线专区| 韩国一区二区视频| www激情久久| 欧美日韩国产综合久久| 99久久婷婷国产综合精品电影| 另类小说综合欧美亚洲| 日韩精品最新网址| 欧美日免费三级在线| 男女激情视频一区| 日韩精品一区二区三区蜜臀| 色婷婷精品大视频在线蜜桃视频| 一个色在线综合| 日韩毛片一二三区| 91精品一区二区三区久久久久久 | 在线综合视频播放| 欧美日韩亚洲综合| 欧美精品在线视频| 欧美久久一区二区| 欧美三级日本三级少妇99| 在线中文字幕不卡| 欧美婷婷六月丁香综合色| 欧美影片第一页| 欧美日韩国产首页在线观看| 欧美日产国产精品| 欧美精品在线视频| 日韩欧美视频一区| 久久久精品免费观看| 国产日韩欧美a| 综合色天天鬼久久鬼色| 亚洲免费观看在线观看| 亚洲成人自拍偷拍| 久久国产综合精品| 成人午夜私人影院| 91成人在线观看喷潮| 在线成人av网站| 国产亚洲一区二区三区| 亚洲图片欧美激情| 日韩av一区二区在线影视| 韩国av一区二区三区四区| 国产精品一区2区| 一区二区三区中文在线| 丝袜美腿亚洲色图| 国产福利不卡视频| 在线观看成人小视频| 国产精品一卡二卡| 99国产精品视频免费观看| 欧美主播一区二区三区美女| 在线成人免费观看| 国产欧美视频在线观看| 亚洲激情图片小说视频| 五月婷婷激情综合网| 国产高清在线精品| 欧美日韩一二三| 中文一区一区三区高中清不卡| 亚洲精品日韩综合观看成人91| 奇米影视在线99精品| 成人激情小说乱人伦| 国产精品一区二区免费不卡| 99国产麻豆精品| 日韩三级伦理片妻子的秘密按摩| 欧美系列亚洲系列| 久久综合999| 亚洲成人一二三| 豆国产96在线|亚洲| 7777精品伊人久久久大香线蕉经典版下载 | 欧美吻胸吃奶大尺度电影| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲精品一卡二卡| 国产精品一区二区久激情瑜伽 | 色88888久久久久久影院按摩| 欧美一区二区女人| 日韩欧美一级二级| 一区二区三区在线视频观看58 | 日韩一区二区视频在线观看| 亚洲欧美日韩国产另类专区| 国产一区欧美日韩| 欧美日韩精品电影| 亚洲大尺度视频在线观看| 99久久国产免费看| 国产精品乱人伦中文| 亚洲视频图片小说| 国产成人亚洲综合色影视| 91精品国产综合久久久久| 一区二区三区欧美视频| 91免费视频网| 亚洲天堂av一区| 99国产精品视频免费观看| 国产色爱av资源综合区| 国产美女在线观看一区| 欧美videos中文字幕| 精品日韩欧美一区二区| 视频一区视频二区中文| 欧美又粗又大又爽| 亚洲欧洲日本在线| 白白色 亚洲乱淫| 亚洲黄色小视频| 欧美亚洲综合一区| 性做久久久久久| 91精品国产色综合久久不卡蜜臀| 五月婷婷久久综合| www亚洲一区| 成人激情av网| 亚洲日本免费电影| 一本到不卡精品视频在线观看| 亚洲蜜桃精久久久久久久| 欧美日韩一卡二卡三卡 | 亚洲精品免费一二三区| 色噜噜狠狠成人中文综合| 一区二区三区视频在线观看| 欧美伊人久久久久久久久影院| 视频一区视频二区中文字幕| 日韩欧美专区在线| 国产精品一区二区视频| 国产欧美一区二区三区在线老狼| 99re在线精品| 久久精品久久99精品久久| 国产精品人妖ts系列视频| 欧美网站大全在线观看| 久久福利视频一区二区| 中文字幕一区二区三区四区不卡| 在线视频国内自拍亚洲视频| 美女视频网站黄色亚洲| 成人黄色777网| 亚洲伊人色欲综合网| 丁香天五香天堂综合| 国产精品超碰97尤物18| 久久99精品一区二区三区| 久久亚洲一级片| 欧美亚洲一区二区三区四区| 国产在线一区二区综合免费视频| 成人免费在线播放视频| 日韩视频一区二区在线观看| 成人午夜激情影院| 日本亚洲电影天堂| 亚洲日穴在线视频| 亚洲精品一线二线三线| 欧美三级中文字幕在线观看| 国产成人av资源| 麻豆视频观看网址久久| 有坂深雪av一区二区精品| 久久久久久电影| 日韩一卡二卡三卡国产欧美| 日本黄色一区二区| 国产激情精品久久久第一区二区 | 91麻豆视频网站| 国产91丝袜在线18| 久久99久国产精品黄毛片色诱| 亚洲精品国产一区二区精华液 | 激情五月婷婷综合| 亚洲综合在线第一页| 国产精品久久久久毛片软件| 精品国产青草久久久久福利| 欧美日韩免费观看一区二区三区| 成人激情免费网站| 国产大片一区二区| 久久成人免费网站| 亚洲国产综合人成综合网站| 亚洲欧洲成人自拍|