全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1194
推到 Plurk!
推到 Facebook!

兩個資料表更新問題

尚未結案
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-03 14:36:16 IP:202.181.xxx.xxx 未訂閱
請問各位 小弟有兩個資料表為T1, T2 T1是人員基本資料  如圖 T2是客戶基本資料 ,在T2裡有兩個欄位 分別為採購人員/分機如圖 當我按下右邊那個button時 會跳出T1 以供選取 選取到某列時,會將T1裡的"姓名","分機"丟給T2那兩個欄位 我需要在T1修改資料後 , 要同步更新到T2中 未按下更新鈕前,需先搜尋T1中欲更新的"姓名","分機"欄位資料是否有在T2中 若沒有 就只要單純做更新動作 , 若有, 就要同步更新....... 如果T1的"姓名","分機"都一起更改,則T2對應到的"採購人員/分機"變為空白 (因為T2的"採購人員/分機"欄位資料是利用BUTTON去連接T1的,假如T1姓名及分機都更改了,那T2的資料當然要設為空白) 如果更改T1的"分機",則T2需依據T1的姓名欄位對應到T2的"採購人員"欄位而更改T2的"分機" (T1的"姓名"欄位資料=T2的"採購人員"欄位資料 T1的"分機"欄位資料=T2的"分機"欄位資料,(同步更新)) 同理,如果只更改T1"姓名"欄位也是 請問各位先進 要如何做呢?? (整個資料庫是用ADOTABLE寫的,如果用ADOTABLE去寫這樣的程式好像比較麻煩 ,好像ADOQUERY可以使用SQL語法中的"UPDATE"來做, 可是小弟不曉得怎麼下,或者有更好的方法呢??) 期待各位回覆 謝謝... 發表人 - odyaho 於 2005/08/03 14:55:35
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-04 14:42:05 IP:202.181.xxx.xxx 未訂閱
我目前程式碼如下
//**** 修改 Button ******
void __fastcall TForm2::SpeedButton10Click(TObject *Sender)
{         Form2->TempADOTable->Active = false;
     Form2->TempADOTable->TableName = "客戶基本資料";
     Form2->TempADOTable->Active = true;
     Form2->TempDataSource->DataSet=Form2->TempADOTable;
     Form2->TempADOTable->Filtered=false;
     Form2->TempADOTable->Filtered=true;         Form2->ADOTable1->Edit();
     Form2->ADOTable1->FieldByName("姓名")->AsString= Form2->MaskEdit1->Text;
     Form2->ADOTable1->FieldByName("部門")->AsString= Form2->ComboBox1->Text;
     Form2->ADOTable1->FieldByName("電話")->AsString= Form2->MaskEdit2->Text;
     Form2->ADOTable1->FieldByName("分機")->AsString= Form2->MaskEdit3->Text;
     Form2->ADOTable1->FieldByName("行動電話")->AsString= Form2->MaskEdit4->Text;
     Form2->ADOTable1->FieldByName("職稱")->AsString = Form2->ComboBox2->Text;
     Form2->ADOTable1->FieldByName("備註")->AsString= Form2->Memo1->Text;
     Form2->ADOTable1->Post();
}
//******  Filter 部分 ***********************
//--------------------------------------------------------------------    void __fastcall TForm2::TempADOTableFilterRecord(TDataSet *DataSet,
      bool &Accept)
{
 int up_data;
 if (Form2->TempADOTable->FieldByName("工廠採購人員1")->AsString.Pos(Form2->ADOTable1->FieldByName("姓名")->AsString) &&
     Form2->TempADOTable->FieldByName("工廠分機1")->AsString.Pos(Form2->ADOTable1->FieldByName("分機")->AsString) != 0)
 {
    up_data = 1;
 }     if (up_data == 1)
 {
    
    Accept = true;
    Form2->TempADOTable->Edit();
    Form2->TempADOTable->FieldByName("工廠採購人員1")->AsString ="Test";
    Form2->TempADOTable->FieldByName("工廠分機1")->AsString = 999;
    Form2->TempADOTable->Post();     }          
 else
 {
    Accept=false;
 }
}
執行後 除了更新T2的兩個欄位外 又在這一列資料後面多出一筆資料 也是有這兩個欄位值 要如何刪除這一比新增加出來的資料呢 發表人 - odyaho 於 2005/08/04 15:05:29
系統時間:2024-06-30 18:38:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!