兩個資料表更新問題 |
尚未結案
|
odyaho
初階會員 發表:60 回覆:104 積分:42 註冊:2005-02-15 發送簡訊給我 |
請問各位
小弟有兩個資料表為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 發送簡訊給我 |
我目前程式碼如下
//**** 修改 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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |