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

如何在同一條件下...將資料庫所有符合的資料抓出來

尚未結案
bee0606
一般會員


發表:22
回覆:30
積分:10
註冊:2003-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-26 16:40:33 IP:61.220.xxx.xxx 未訂閱
請問各位先進..如何將資料庫符合條件下所有資料抓出....以前只做過單筆.... 有想過用迴圈方式....但要如何知道資料庫所有資料筆數......請問先進這如何解決...謝謝先進
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-26 17:56:38 IP:61.221.xxx.xxx 未訂閱
bee0606, 您好 不知您是要使用哪一種元件? 若是使用ADOQuery  
ADOQuery->Close();
ADOQuery->SQL->Clear();
ADOQuery->SQL->Text = "select * from TableName where FieldA = 10 "; 
ADOQuery->Open();
 
// TableName:要查詢的Table名稱,FieldA:Table欄位名稱 以上可查詢到TableName中FieldA符合條件的所有資料。 ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
bee0606
一般會員


發表:22
回覆:30
積分:10
註冊:2003-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-26 20:25:08 IP:61.220.xxx.xxx 未訂閱
請問先進TableName:要查詢的Table名稱..指的是如data.mdb裡的base這資料表嗎  
ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Text = "select * from Excel where ComboBox1->Text = 男";
    ADOQuery1->Open();
 
則會出現這錯誤....因第一次使用這元件...還在學習中...請先進多多包含.. 謝謝先進
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-26 22:15:24 IP:211.162.xxx.xxx 未訂閱
bee0606大大,您好! 打攪您一下,請看看下面的程式。它演示了從一個指定的Access資料庫中抓出全部的資料,希望能對您的問題有所幫助! 依次在 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=15348281&CC=343259"> 將ADOConnection1的LoginPrompt屬性設爲False;將ADOQuery1的Connection屬性設爲ADOConnection1;將DataSource1的DataSet設爲ADOQuery1;將DBGrid1的DataSource設爲DataSource1。
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString sFileName;
    if(OpenDialog1->Execute())
    {
        Edit1->Text = OpenDialog1->FileName;
        sFileName   = Edit1->Text;
        ADOConnection1->Connected = False;
        ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
        sFileName + ";Mode=ReadWrite;Persist Security Info=False";
        ADOConnection1->Connected = True;
        ADOConnection1->GetTableNames(ComboBox1->Items,False);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
        AnsiString  sSelectTable;
        int         iSelectIndex;
        AnsiString  sSql;            iSelectIndex = ComboBox1->ItemIndex;
        sSelectTable = ComboBox1->Items->Strings[iSelectIndex];
        sSql = "select * from " + sSelectTable;
        ShowMessage(sSql);
        ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add(sSql);
        ADOQuery1->Open();
}
//---------------------------------------------------------------------------
Run後如下: 請將您的code中的第3行改爲: ADOQuery1->SQL->Text = "select * from Excel where ComboBox1->Text = '男'"; 試試看現在能否運行,好嗎?

===============
人生在勤,不索何获? 
===============
------
人生在勤,不索何获?
bee0606
一般會員


發表:22
回覆:30
積分:10
註冊:2003-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-26 22:51:55 IP:61.220.xxx.xxx 未訂閱
感謝先進詳細的指導  
 
 AnsiString  sSelectTable;
    int         iSelectIndex;
    AnsiString  sSql;
    AnsiString  Edit_text;
    iSelectIndex = ComboBox1->ItemIndex;
    sSelectTable = ComboBox1->Items->Strings[iSelectIndex];
    Edit_text = Edit1->Text;
    sSql = "select * from Excel where " + sSelectTable + "=" + Edit_text;
    ShowMessage(sSql);        ADOQuery1->Active = false;
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add(sSql);
    //ADOQuery1->SQL->Text = "select * from Excel where ComboBox1->Text = 'Edit1->Text'";
    //ADOQuery1->SQL->Text = "Select * from Excel where 'ComboBox1->Items->Strings[ComboBox1->ItemIndex]' = 'Edit1->Text' ";
    ADOQuery1->Open();
    ADOQuery1->Active = true;
我改成這樣...秀出來的SQL也感覺是對得..不過會出現這錯誤 感謝先進指導
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-27 00:18:00 IP:211.162.xxx.xxx 未訂閱
不好意思,我也是一知半解,經常有謬誤,請將下句改爲: sSql = "select * from Excel where " sSelectTable "='" Edit_text "'"; 如果要賦值,可以參考下面的這種寫法: ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("select * from Excel"); ADOQuery1->SQL->Add("where User_ID=:ID"); ADOQuery1->Parameters->ParamByName("ID")->Value = Edit1->Text; ADOQuery1->Open();

===============
人生在勤,不索何获? 
===============
------
人生在勤,不索何获?
bee0606
一般會員


發表:22
回覆:30
積分:10
註冊:2003-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-27 08:04:26 IP:61.220.xxx.xxx 未訂閱
相當感謝bigdogchina大大跟tech_state大大...真宿讓小弟受益良多.. 不好意思..再請問 
ADOQuery1->Parameters->ParamByName("ID")->Value = Edit1->Text; 
所謂的賦值...指的是將Edit1->Text值直接給予ID嗎 ....感謝先進指導....
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-27 14:40:44 IP:211.162.xxx.xxx 未訂閱
bee0606大大,您好! 關於ParamByName最好的解釋應該是BCB的Help吧,下面的摘自Help,希望對您的理解有幫助 class="code"> =============== 人生在勤,不索何获? ===============
------
人生在勤,不索何获?
系統時間:2024-04-30 9:28:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!