線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1314
推到 Plurk!
推到 Facebook!

請教一下我該如何改為雙格查尋(兩個Edit1)

尚未結案
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-08 17:54:44 IP:61.59.xxx.xxx 未訂閱
請問各位大大 我下面是一個單格查尋(一個Edit1) IF(Edit1.Text <> '') THEN Query1.SQL.ADD(' AND BNENO LIKE ''%' Edit1.Text '%'' '); 請教一下我該如何改為雙格查尋(兩個Edit1) 查尋edit1~edit2之間的質 可以由上的程式改為雙格查尋嗎~
------
Xax
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-08 21:11:03 IP:211.22.xxx.xxx 未訂閱
首先你要做錯誤檢查確定edit2的值一定比edit1大而且值都是合法的,範例:
 if( ( Edit1.Text <> '') and ( Edit2.Text <> '') ) then
  Query1.SQL.ADD('Select * From 資料表 Where BNENO >='''   Edit1.Text   ''' and BNENO <='''   Edit2.Text   '''');
上述陳述式也可以用Between關鍵字喔!自己試看看! -----------------------------------------------
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-09 03:46:56 IP:221.169.xxx.xxx 未訂閱
20052020:Stallion大大的Between用法    "Where BNENO BETWEEN '" Edit1->Text "' and '" Edit2->Text "'";
通過匹配一定範圍的值來取出資料,表示
BNENO > Edit1->Text and BNENO < Edit2->Text
記住這不含等於=!
使用運算式BETWEEN 的語句較運算式更易讀。    參考常用、主要的SQL指令:
●Select(選取資料,屬DQL)
  資料查詢
     SELCET * FROM Table                    //過濾顯示所有資料庫
     SELCET Name, Tel FROM Table            //過濾顯示 Name Tel 資料
     SELCET DISTINCT dept_no FROM table_name //DISTINCT 取消重復部份
     SELCET DISTINCT au_lname FROM authors WHERE au_lname="Ringer"  
     SELCET full_name, salsry*12 FROM table_name //全名及計算年薪
     SELCET full_name, salsry*12 AS year_salary FROM table_name
      //在ISO 的SQL 語法標準中允許使用AS子句重新命名欄位名稱 
     SELCET * FROM table_name WHERE column1 = xxx [and column2 > yyy] 
              [or column3 <> zzz]
------------------------------------------------------------------
  整合性的查詢:
    SELCET count (*) FROM table_name WHERE column_name = xxx
      //查詢符合條件的資料共有幾筆。
    SELCET SUM(column1) FROM table_name
      說明:
      1.計算出總和,所選的欄位必須是可數的數字形態。
      2.除此以外還有 avg() 是計算平均、max()、min()計算最大最小值的
        整合性查詢。
------------------------------------------------------------------
  組合查詢
    組合查詢是指所查詢得資料來源並不隻有單一的表格,而是聯合一個以上
        的表格纔能夠得到結果的。
    SELCET * FROM table1,table2 WHERE table1.colum1=table2.column1
      說明:
      1.查詢兩個表格中其中 column1 值相同的資料。
      2.當然兩個表格相互比較的欄位,其資料形態必須相同。
      3.一個復雜的查詢其動用到的表格可能會很多個。
------------------------------------------------------------------
  復合性的查詢
    SELCET * FROM table_name1 WHERE exists ( SELCET * FROM 
            table_name2 WHERE conditions )
      說明:1.where 的 conditions 可以是另外一個的 query。
            2.exists 在此是指存在與否。
    SELCET * FROM table_name1 WHERE column1 IN ( SELCET column1 
             FROM table_name2 WHERE conditions )
      說明:1. in 後面接的是一個集合,表示column1 存在集合裡面。
            2. select 出來的資料形態必須符合 column1。 
------------------------------------------------------------------
  其他查詢
    SELCET * FROM table_name1 WHERE column1 LIKE 'x%' 
      //說明:like 必須和後面的'x%' 相呼應表示以 x為開頭的字串。
    SELCET * FROM table_name1 WHERE column1 IN ('xxx','yyy',..)
      //說明:in 後面接的是一個集合,表示column1 存在集合裡面。
    SELCET * FROM table_name1 WHERE column1 BETWEEN xx AND yy
      //說明:between 表示 column1 的值介於 xx 和 yy 之間。 
    SELCET * FROM 程式基本資料 WHERE 陽上姓名 LIKE "% 楊 %";
      //過濾不特定"徐"的資料
    SELCET * FROM Table WHERE Name LIKE "*徐*" 
      //過濾特定"徐"之中的資料
    SELCET full_name,hire_dat,phone_exit FROM table_name
       WHERE lase_name LIKE 'Le#%' ESCAPE '#';
      //ESCAPE 比對符號要檢查lase_name是否內含'Le#% 的字串
    SELCET full_name,hire_dat,phone_exit FROM table_name
       WHERE lase_name LIKE 'L%';    
    //lase_name LIKE 'L%' 代表第一個字母須以L字母為開頭其餘可任意字串        //lase_name NOT LIKE 'L%' 代表第一個字母不得為L字母 
    //lase_name LIKE 'L%' 代表第一個字母須以L字母為開頭其餘可任意字串
    //lase_name LIKE 'L__' 姓氏須三個字元第一個字元為 L
                           (底線字元'_'類似DOS下的'?'字元)  
    //lase_name LIKE 'î%'代表任何內含'ee'字串 
    //lase_name LIKE '%e'最後一個字元須為'e'
------------------------------------------------------------------
  資料篩選
   資7料單一搜尋
     SELCET full_name, hire_date,phone_exit FROM table_name 
            WHERE dept_no=600 //顯示部門代號等於600的所有員工....
     SELCET full_name,hire_dat,phone_exit FROM table_name
            WHERE phone_exit IS NULL 
        //列出所有沒有分機號碼的員工姓名(雇員)  
     SELCET full_name,hire_dat,phone_exit FROM table_name
            WHERE phone_exit IS NOT NULL 
        //列出所有有分機號碼的員工姓名<非NULL值>
------------------------------------------------------------------
   資料多重搜尋
     SELCET full_name,phone_exit FROM table_name
            WHERE phone_exit IS NULL AND hire_date > '20-jan-1992';
             //未有分機且進入公司(雇員)日期之後員工
     <多資料表連結>
     SELCET full_name, job_country, currency FROM table_name,             
            table_name1 WHERE job_country = table_name1
     SELCET full_name, job_country, currency FROM table_name,             
            LEFT JOIN country ON job_country = table_name1
------------------------------------------------------------------
   搜尋資料範圍
     SELCET full_name,salary FROM table_name 
            WHERE salary BETWEEN 100000 AND 200000; 
             //列出薪資在100000至200000的員工
     SELCET full_name,salary FROM table_name 
            WHERE salary >= 100000 AND salary <= 200000;
             //比較運算的查詢語言
     SELCET full_name,job_country FROM table_name//集合成員運算(IN子句)
            WHERE job_country IN('Italy France')//義大利及法國員工
------------------------------------------------------------------
 資料排序結果
  單一排序資料
    SELCET full_name,salary,dept_no FROM table_name ORDER BY dept_no
      //依各部門代號順序列出員工姓名及薪資
    SELCET column1,column2 FROM table_name order by column2 [desc]
      //說明:order by 是指定以某個欄位做排序,[desc]是指從大到小排列,
          若沒有指明,則是從小到大排列
    SELCET * FROM Table Order By Age Desc;  
      //以年齡欄反排序
  多欄排序資料
    SELCET full_name,salary,dept_no FROM table_name ORDER BY 
           dept_no, salary DESC;
      //部門代號由小而大,薪資由大而小輸出所有員工姓名
------------------------------------------------------------------
 SQL合計函數(aggregate function)
    AVG  :平均值
    COUNT:筆數
    MIN  :最小值
    MAX  :最大值
    SUM  :加總值
    SELECT dept_no COUNT(salary)FROM table_name //錯誤的
    SELECT dept_no MAX(salary)FROM table_name   //錯誤的
    SELECT dept_no MAX(salary)FROM table_name GROUP BY dept_no//正確的 
    < COUNT 的應用 >
    SELECT COUNT(*)FROM table_name WHERE dept_no = 100
       //合計代號100的部門中有幾位員工
    < COUNT(DISTINCT) 的應用 >
    SELECT COUNT(DISTINCT dept_no) FROM table_name 
       //公司共有幾個部門
    < COUNT及SUM 的應用 >
    SELECT COUNT(*),SUM(salsry)FROM table_name WHERE dept_no = 100
       //部門代號為100的員工人數及薪資總數
    < MIN,MAX,AVG 的應用 >
    SELECT MIN(salsry),MAX(salsry),AVG(salsry)FROM table_name 
           WHERE dept_no = 100
       //部門代號為100的員工的最低薪資和最高薪資及平均薪資
    < GROUP BY子句應用 >
    SELECT COUNT(*),MIN(salsry),MAX(salsry),SUM(salsry)
           FROM table_name GROUP BY dept_no 
       //找出所有部門的人數最低薪資  最高薪資  薪資總數
    < HAVING子句應用 >
    SELECT COUNT(*),MIN(salsry),MAX(salsry),SUM(salsry)
           FROM table_name GROUP BY dept_no HAVING COUNT(dept_no)>2
       //找出所有部門的人數大於2個人的最低薪資  最高薪資  薪資總數
------------------------------------------------------------------    
Andy Chang
------
Andy Chang
系統時間:2024-05-04 4:12:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!