请问怎样更新交叉查询的数据表? |
尚未結案
|
easun1
一般會員 發表:2 回覆:2 積分:0 註冊:2003-09-25 發送簡訊給我 |
|
azurecloud
中階會員 發表:52 回覆:108 積分:92 註冊:2003-09-04 發送簡訊給我 |
Hi,easun1 您好:
可否把您想做的事再描述的清楚一點呢?
一般來說更新查詢是下 SQL 語法中的 Update 語法去更新欄位值
而 Delphi 中可包住 Update 語法 並送出執行的方法有很多種
比如說可用 ADOCommand 物件的 Execute 方法,或是 TQuery 物件
的 ExecSQL 方法都可以;甚至可自行 Create ADODB 物件例如: conn:=CreateOleObject('ADODB.Connection');
rs:= CreateOleObject('ADODB.RecordSet');
databasename := ExtractFilePath(Application.ExeName) 'db1.mdb';
connstr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' trim(databasename);;
conn.open(connstr);
tempstr := 'Update 語法寫在這…';
conn.execute(tempstr); 以上給您參考,希望幫得上忙。
我要努力向上~~
|
easun1
一般會員 發表:2 回覆:2 積分:0 註冊:2003-09-25 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 從您的要求來看﹐雖說您建立的資料表有關聯關系﹐但似乎僅僅做欄位值固定更新的事務上﹐Update的SQL語法即可完成﹐可將SQL語法寫在連接資料表以供使用者存取異動的資料集元件(比如ADOTable1)之AfterPost事件中﹕
Var Remark : String; begin Remark := ADOTable1.FieldByName('姓名').AsString; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Update Name Set 性別碼=''1'' Where 性別碼=''男'' and 姓名=''' Remark ''''); ADOQuery1.ExecSQL; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Update Name Set 性別碼=''2'' Where 性別碼=''女'' and 姓名=''' Remark ''''); ADOQuery1.ExecSQL;以上的方法是先將資料存入資料表中﹐再對其進行更改﹔另外還有一種方法就是在資料存入之前﹐就將對應資料表欄位的輸入元件之輸入值先行更改﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 在輸入介面中,以 DBLookupComboBox 來輸入性別欄位,其中, DataSource --> Name 相對應的 DataSource
DataField --> Name 性別代碼欄位
ListSource --> Gender 相對應的 DataSource
ListField --> Gender 性別欄位
KeyField --> Gender 性別代碼欄位 這樣就行了,但別忘記要將 Gender 先行開啟 --------------------------------
小弟才疏學淺,若有謬誤請不吝指教
--------------------------------
------
Fishman |
azurecloud
中階會員 發表:52 回覆:108 積分:92 註冊:2003-09-04 發送簡訊給我 |
Hi,easun1 您好:
我想您的問題是組合 SQL 語法的問題,如 cashxin2002 版主所言一樣, 例如說我可以這樣做,假設您讓使用者用 TEdit 欄位自行輸入「男」或「女」,
而目前的姓名欄位為 edit_Name 的話
那 SQL 語法可以這樣組合
var sqlstr,tempstr : string; if (Edit1.text = '男') then
sqlstr := 'Update Name Set 性別碼=''1'' Where 姓名字段 = ''' edit_Name.text '''; 當然啦,像這種問題最好是用下拉式選單讓使用者選擇就好,那假設是用 TComboBox 的話就改一下 if 判斷就行了 if (ComboBox1.text = '男') then
sqlstr := 'Update Name Set 性別碼=''1'' Where 姓名字段 = ''' edit_Name.text '''; SQL 語法組合出來後,就像我上面所說,有很多種方法包住它送出執行,
端看你的喜好了,像 cashxin2002 版主用的 ADOQuery 物件也是其中一種。 我要努力向上~~
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |