請教關於新建立的暫存檔如何填入資料(paradox) |
缺席
|
affinity
一般會員 發表:1 回覆:4 積分:1 註冊:2007-01-25 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
affinity
一般會員 發表:1 回覆:4 積分:1 註冊:2007-01-25 發送簡訊給我 |
其實我有耶 我看了 也找了 可是還是不知道從哪著手
不過我想說 拉一個TDatabase AliasName屬性設abc DatabaseName屬性設DB_DatabaseMain 再拉一個TQuery DatabaseName屬性設DB_DatabaseMain 但SQL屬性可以這樣寫嗎 select tt."year", tt."month", code, name, from tt where ((tt."year" = 95 and tt."month" = 2) or (tt."year" = 95 and tt."month" =4)) 那程式裡要怎嚜寫呢 可以寫入暫存檔 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
由你提出的狀況, 對整個程式設計上的基礎並不夠紮實, 還是建議你先從簡單的程式設計開始, 另外這個我提供的方向, 不知你是否能看懂
1.在form建置一個button, 在 onclick事件寫程式 2.資料庫來源檔以query 是ok的, 因為利用 sql 語法比較容易處理 3.tmp檔請以 TTable 型態指定 4.用一個迴圈來填入資料到 tmp(利用 TQuery 過濾出你要的資料) 程式大致如下 while not Query1.Eof do begin Table1.Append; Table1.FieldbyName('Field1name').Value:= Query1.FieldbyName('Field1name').Value; ..... Table1.Post; Query1.Next; end; 註:Table1為 tmp檔, Query1為來源 Field1Name 為各Table或Query的欄位名稱, 例如 itemno欄位, 那就是 Table1.FieldbyName('itemno').Value 試試看吧! |
bruce
中階會員 發表:19 回覆:121 積分:83 註冊:2002-04-16 發送簡訊給我 |
嗨,試試這樣: insert into tmp(暫存檔) select * from xxx(來源table) ===================引 用 文 章=================== 各位大大我想請問依下 我是用paradox作資料庫 資料庫名稱叫abc 我利用程式新增一個暫存檔 名稱為tmp 並建立好欄位了 現在我想利用abc資料庫的其他資料表 將資料挑選 然後一筆一筆放入剛剛建立的暫存檔中 請問我應該怎嚜做阿 要先拉什麼元件到form?? 程式該從何開始撰寫 我真的一點頭緒都沒有 可以給我指點一下嗎?? 謝謝 |
affinity
一般會員 發表:1 回覆:4 積分:1 註冊:2007-01-25 發送簡訊給我 |
我程式裡這樣寫
... private { Private declarations } public s: string; Present:TDatetime; hour,min,sec,msec,nyear,nmonth,nday: Word; Table: TTable; { Public declarations } ... implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); //建立暫存檔 begin Present := Now; decodeDate(Present,nyear,nmonth,nday); decodeTime(Present,hour,min,sec,msec); s := Format('%.2d%.2d%.2d%.2d%.2d%',[nMonth,nDay,Hour,Min,Sec]); //月日時間 Table := TTable.create(application); with Table do begin active := false; databasename := 'DB_DatabaseMain'; tabletype:=ttdefault; tablename:='tmp' s ; end; if table.exists then begin with table do begin active := False; DeleteTable; end; end; with table do begin active := false; with FieldDefs do begin clear; with AddFieldDef do begin Name:= 'YY'; //年 DataType := ftInteger; end; with AddFieldDef do begin Name:= 'MM'; //月 DataType := ftInteger; end; with AddFieldDef do begin Name:= 'Name'; //姓名 DataType := ftString; Size := 12; end; end; CreateTable; end; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin while not Query1.Eof do begin table.Append; table.FieldbyName('YY').Value:= Query1.FieldbyName('year').Value; table.FieldbyName('MM').Value:= Query1.FieldbyName('month').Value; table.FieldbyName('name').Value:= Query1.FieldbyName('name').Value; table.Post; Query1.Next; end; end; 由於我的暫存檔是按了BitBtn1才產生 並且暫存黨的資料表名稱是tmp 日期時間 我測試按了第一個和第二個按鈕 可是雖然沒有執行錯誤 可是我從delphi的Database Desktop去察看站存檔 卻沒有資料寫入 為什麼呢?? |
bruce
中階會員 發表:19 回覆:121 積分:83 註冊:2002-04-16 發送簡訊給我 |
|
affinity
一般會員 發表:1 回覆:4 積分:1 註冊:2007-01-25 發送簡訊給我 |
你的意思是說將sql語法直接寫在程式中 而不要用TQuery的屬性撰寫嗎??
如果是直接寫在程式中 我不知道該如何寫較好... 我在delphi有一個工具是SQL Explorer中測試語法 與法如下 select kkk."year", kkk."month", code, from wallemp where ((kkk."year" = 95 and kkk."month" = 1) or (kkk."year"= 95 and kkk."month" = 3)) 而我也如法泡製將TQurey的sql屬性中的語法也是這樣寫 如果要寫在程式中 卻不知道要如何改了 ===================引 用 文 章=================== 建立暫存檔,並存入資料的SQL語法如下: select * into?temp from (來源table)?where(條件) 建議盡量使用SQL語法進行操作資料的更新,速度快且易於維護 |
bruce
中階會員 發表:19 回覆:121 積分:83 註冊:2002-04-16 發送簡訊給我 |
|
affinity
一般會員 發表:1 回覆:4 積分:1 註冊:2007-01-25 發送簡訊給我 |
不好意思 我太笨了 不太懂 那我程式是要改哪...摸不著頭緒 ===================引 用 文 章=================== 沒錯,就是這個意思,sql語法只是字串而已,程式可以拼出所需的sql字串即可,處裡上比用循序逐筆讀取反而簡單多了,舉例來說: tablename:='庫存檔' str:='select * form %s' sql:=format(str,[tablename]) 這樣就生成了:selct * form 庫存檔 其他的請自行舉一反三。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |