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

請問關於locate的問題

尚未結案
WayneNix
一般會員


發表:3
回覆:2
積分:1
註冊:2004-10-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-29 01:07:37 IP:220.141.xxx.xxx 未訂閱
各位大大好: 小弟作一個客戶查詢的資料庫,每每在輸入資料按查詢後,總是跟我說Variant is not an array,以下是我的原始碼: P_NAME,P_COST,P_DATE是我的database的FieldName
-------------------------------------------------------------------
void __fastcall TForm1::btn_QueryClick(TObject *Sender)
{
  if(edtCust->Text=="")
    {
     ShowMessage("尚未輸入資料喔!");
     return;
    }
    tblOrder->Close();
    tblOrder->Open();
    Set option;        bool search = tblOrder->Locate("P_NAME;P_COST;P_DATE",edtCust->Text, option);
    if(search==true)
      {
      edtCost->Text=tblOrder->FieldValues["P_COST"];
      mskedt_Date->Text=tblOrder->FieldValues["P_DATE"];
      }
}
Locate中的edtCust->Text,我試著用改成VarArrayOf(edtCust->Text,1),compile則出現Cannot convert 'AnsiString' to 'const Variant *'
請問各位大大我應該怎麼修改,謝謝~
bigdogchina
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-29 10:45:13 IP:211.162.xxx.xxx 未訂閱
Hi,WayneNix,您好! 小弟的一點淺見,試試這樣是否可行:

        TLocateOptions Opts;
        Opts.Clear();
        Opts<Locate("P_Name;P_Cost;P_Date",VarArrayOf(LocalValue,2),Opts);
相關問題bruce0211前輩早有論述,還請您看看: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18760 ■ Locate 使用 Locate 只搜尋"一個鍵位"值時 (Table1 不需有索引) Table1->Locate(“欲搜尋之欄位名稱”, 搜尋值, TLocateOptions() << loPartialKey); 使用 Locate 搜尋"複合鍵位"(兩個以上)值時 (Table1 不需有索引) Variant locvalues[]={搜尋值1, 搜尋值2, 搜尋值3}; Table1->Locate("欄位名稱1; 欄位名稱2; 欄位名稱3", VarArrayOf(locvalues,(sizeof(locvalues)/16-1)),TLocateOptions() << loPartialKey); ================================= 人生在勤,不索何獲 業精於勤荒於嬉,行成於思毀於隨 臨淵羡魚不如退而結網
------
人生在勤,不索何获?
WayneNix
一般會員


發表:3
回覆:2
積分:1
註冊:2004-10-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-29 22:06:51 IP:61.225.xxx.xxx 未訂閱
我照大大的方法試了,會出現以上的畫面~而且會search不到,出現no的ShowMessage,請問大大我這邊犯了什麼錯,tkx 以下是我改的程式碼:
-------------------------------------------------------
void __fastcall TForm1::btn_QueryClick(TObject *Sender)
{
  if(edtCust->Text=="")
    {
     ShowMessage("尚未輸入資料喔!");
     return;
    }
    tblOrder->Close();
    tblOrder->Open();
 
   TLocateOptions Opts;
        Opts.Clear();
        Opts<Text);
        LocalValue[1] = Variant(edtCost->Text);
        LocalValue[2] = Variant(mskedt_Date->Text);
        bool search = tblOrder->Locate("P_Name;P_Cost;P_Date",VarArrayOf(LocalValue,2),Opts);
             
      if(search==true)
      {
      edtCost->Text=tblOrder->FieldValues["P_COST"];
      mskedt_Date->Text=tblOrder->FieldValues["P_DATE"];
      }
    else
    {
    ShowMessage("no!");
    return;
    }
}    
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-30 00:04:44 IP:61.62.xxx.xxx 未訂閱
張貼程式碼請縮排,以利閱讀,小弟已協助修改,下次請您注意 詳細說明請參考本站規定 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19264    【公告】程式碼張貼規則與方法 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=57538    
andychang1690
資深會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-30 01:11:56 IP:221.169.xxx.xxx 未訂閱
引言: 我照大大的方法試了,會出現以上的畫面~而且會search不到,出現no的ShowMessage,請問大大我這邊犯了什麼錯,tkx 以下是我改的程式碼:
-------------------------------------------------------
void __fastcall TForm1::btn_QueryClick(TObject *Sender)
{
  if(edtCust->Text=="")
    {
     ShowMessage("尚未輸入資料喔!");
     return;
    }
    tblOrder->Close();
    tblOrder->Open();
 
   TLocateOptions Opts;
        Opts.Clear();
        Opts<3]; //是3不是2               LocalValue[0] = Variant(edtCust->Text);
        LocalValue[1] = Variant(edtCost->Text);
        LocalValue[2] = Variant(mskedt_Date->Text);
        bool search = tblOrder->Locate("P_Name;P_Cost;P_Date",VarArrayOf(LocalValue,2),Opts);
             
      if(search==true)
      {
      edtCost->Text=tblOrder->FieldValues["P_COST"];
      mskedt_Date->Text=tblOrder->FieldValues["P_DATE"];
      }
    else
    {
    ShowMessage("no!");
    return;
    }
}    
WayneNix:bigdogchina版大筆誤你也照抄,好可愛! 請注意上面紅字! Andy Chang
------
Andy Chang
WayneNix
一般會員


發表:3
回覆:2
積分:1
註冊:2004-10-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-30 01:24:54 IP:61.225.xxx.xxx 未訂閱
呵呵~~我真是眼花了 @@ 問題已解決,謝謝大大~~ 原來是我自己搞錯了,我要查詢的目標(date)我也把他那搜尋的範圍, 加上沒看到array的錯 :P 見笑了~
bigdogchina
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-30 09:53:10 IP:211.162.xxx.xxx 未訂閱
慚愧啊,很明顯的array錯誤居然沒有發現,自己也該檢討檢討基本功是否紮實。恩,今天是周末,該復習復習《C+++ Primer》了 ================================= <>人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網
------
人生在勤,不索何获?
系統時間:2024-04-29 5:29:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!