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

如何使用Edit搜尋?

答題得分者是:GrandRURU
qwerabc
一般會員


發表:7
回覆:7
積分:2
註冊:2007-12-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-16 19:48:39 IP:122.125.xxx.xxx 訂閱
各位大大,小弟是BCB的初學者!
想請問如果要在Edit中隨便輸入值搜尋資料,
且按下buttom後在DBGrid內顯示所有相關的值,該怎麼做呢?
之前有嘗試用like的語法來搜尋,
但在buttom下的語法上,搞不太懂要怎樣著手撰寫>"<
是要把Edit內設成一個變數嗎?那跟資料庫如何做搭配呢?
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-16 21:34:00 IP:220.139.xxx.xxx 未訂閱
以下程式碼給你參考一下。
[code cpp]
String a = "%" Edit1->Text "%";
Query1->SQL->Add("select * from Customers where firstname like '" a "'");
Query1->Open();
DBGrid1->DataSource=DataSource1;
[/code]
===================引 用 qwerabc 文 章===================
各位大大,小弟是BCB的初學者!
想請問如果要在Edit中隨便輸入值搜尋資料,
且按下buttom後在DBGrid內顯示所有相關的值,該怎麼做呢?
之前有嘗試用like的語法來搜尋,
但在buttom下的語法上,搞不太懂要怎樣著手撰寫>"<
是要把Edit內設成一個變數嗎?那跟資料庫如何做搭配呢?
qwerabc
一般會員


發表:7
回覆:7
積分:2
註冊:2007-12-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-17 19:25:06 IP:122.125.xxx.xxx 訂閱
感謝GrandRURU大大!
可順利執行!
但執行後,卻出現
"you have an error in your SQL syntax near 'select * from member where name like '%a%'"
等字眼的訊息視窗!
我覺得是Builder的問題,所以關掉builder直接執行.exe檔
但在搜尋的部分還是出現此問題!
該如何解決!
===================引 用 GrandRURU 文 章===================
以下程式碼給你參考一下。
[code cpp]
String a = "%" Edit1->Text "%";
Query1->SQL->Add("select * from Customers where firstname like '" a "'");
Query1->Open();
DBGrid1->DataSource=DataSource1;
[/code]
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-17 20:35:23 IP:220.139.xxx.xxx 未訂閱
我剛剛又重新建了一個新的專案來試,結果還是正常哩,你要不要再檢查:
一、你的程式碼是否有打錯?
二、Query元件中的「DatabaseName」內容是否有指到BDE的alias name(如BCDemos等)。
以上我的專案程式碼給你參考一下:
unit.cpp
[code cpp]
#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String a = "%" Edit1->Text "%";
Query1->SQL->Add("select * from employee where firstname like '" a "'");
Query1->Open();
}
[/code]
unit.h
[code cpp]
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp><br />#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TQuery *Query1;
TDBGrid *DBGrid1;
TDataSource *DataSource1;
TEdit *Edit1;
TButton *Button1;
TTable *Table1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
[/code]
編輯記錄
GrandRURU 重新編輯於 2007-12-17 21:35:34, 註解 無‧
qwerabc
一般會員


發表:7
回覆:7
積分:2
註冊:2007-12-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-18 15:44:34 IP:122.125.xxx.xxx 訂閱
我的程式碼沒有打錯!!
我仔細看了一下~~!
因為我是用MySQL來建立資料庫的!(用ADO元件連結)
而在執行搜尋的步驟時出現了
[ODBC 3.51 Driver][mysqld-3.23.56-nt]You have an error......
所以,應該不是程式碼的問題!
只是我在mysql上測試like語法也沒有問題!
不曉得是不是在buttom下"select *....."這個字串無法被MySQL接受阿??
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-12-18 18:12:15 IP:220.139.xxx.xxx 未訂閱
你在建ADO的時候有沒有先測試連線狀態?
先用ADOTABLE元件測試DBGRID會不會動,再改成QUERY,最後再改到BUTTON內。

還不行,你再把你的程式碼放上來看看吧。
===================引 用 qwerabc 文 章===================
我的程式碼沒有打錯!!
我仔細看了一下~~!
因為我是用MySQL來建立資料庫的!(用ADO元件連結)
而在執行搜尋的步驟時出現了
[ODBC 3.51 Driver][mysqld-3.23.56-nt]You have an error......
所以,應該不是程式碼的問題!
只是我在mysql上測試like語法也沒有問題!
不曉得是不是在buttom下"select *....."這個字串無法被MySQL接受阿??
qwerabc
一般會員


發表:7
回覆:7
積分:2
註冊:2007-12-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-12-19 16:15:25 IP:122.125.xxx.xxx 訂閱
因為我是先測試此方法行不行!
在加入欲顯示的功能!
所以將程式碼貼上去試!
但修改過後,執行上就出現之前的狀況!
已確定測試連線成功!
但錯誤仍存在~~><"

[code cpp]

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String a = "%" Edit1->Text "%";
ADOQuery1->SQL->Add("select * from member where m_name like '" a "'");
ADOQuery1->Open();
DBGrid1->DataSource=DataSource1;
}

[/code]

class TForm1 : public TForm
{
__published: // IDE-managed Components
TDataSource *DataSource1;
TADOQuery *ADOQuery1;
TAutoIncField *ADOQuery1m_no;
TStringField *ADOQuery1m_name;
TStringField *ADOQuery1m_address;
TStringField *ADOQuery1m_tel;
TStringField *ADOQuery1m_birth;
TStringField *ADOQuery1m_ID;
TStringField *ADOQuery1m_sex;
TADOConnection *ADOConnection1;
TDBGrid *DBGrid1;
TEdit *Edit1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-12-19 23:03:55 IP:220.139.xxx.xxx 未訂閱
我剛剛已經測試過了,執行上沒有問題,成功的篩選出資料。
你有使用過ADOtable連DB然後正常在DBGRID上顯示資料嗎?
qwerabc
一般會員


發表:7
回覆:7
積分:2
註冊:2007-12-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-12-20 20:30:14 IP:122.125.xxx.xxx 訂閱
不好意思!我有連ADOTable也有連結上DB,只是table似乎無法使用SQL語法!
還是我不清楚怎麼用= =?(抱歉!新手請見諒!)
另請問GrandRURU是否是使用MySQL?
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-12-20 23:38:25 IP:220.139.xxx.xxx 未訂閱
我這邊目前測試的結果如下。
qwerabc
一般會員


發表:7
回覆:7
積分:2
註冊:2007-12-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-12-21 16:22:28 IP:122.125.xxx.xxx 訂閱
感謝GrandRURU指導!
問題已解決!
沒有將SQL清除!所以無法正確執行!
系統時間:2024-04-25 7:01:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!