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

請教關於新建立的暫存檔如何填入資料(paradox)

缺席
affinity
一般會員


發表:1
回覆:4
積分:1
註冊:2007-01-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-28 17:42:18 IP:210.202.xxx.xxx 訂閱
各位大大我想請問依下
我是用paradox作資料庫 資料庫名稱叫abc
我利用程式新增一個暫存檔 名稱為tmp 並建立好欄位了

現在我想利用abc資料庫的其他資料表
將資料挑選 然後一筆一筆放入剛剛建立的暫存檔中

請問我應該怎嚜做阿
要先拉什麼元件到form??
程式該從何開始撰寫
我真的一點頭緒都沒有
可以給我指點一下嗎??
謝謝

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-28 17:59:33 IP:61.67.xxx.xxx 未訂閱
嗯! 看來你是新手囉, 先歡迎你加入行列, 你的問題並非在一個版面可以說完(那等於寫一本書), 所以建議你先找一兩本入門的書, 內有介紹 database的做法, 甚至還有附demo程式, 從這裡下手會比較快, 再來有問題再po上來討論!~
affinity
一般會員


發表:1
回覆:4
積分:1
註冊:2007-01-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-28 18:08:54 IP:210.202.xxx.xxx 訂閱
其實我有耶 我看了 也找了 可是還是不知道從哪著手
不過我想說 拉一個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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-01 02:33:43 IP:61.67.xxx.xxx 未訂閱
由你提出的狀況, 對整個程式設計上的基礎並不夠紮實, 還是建議你先從簡單的程式設計開始, 另外這個我提供的方向, 不知你是否能看懂

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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-03-01 10:15:44 IP:203.70.xxx.xxx 訂閱

嗨,試試這樣:

insert into tmp(暫存檔) select * from xxx(來源table)



===================引 用 文 章===================
各位大大我想請問依下
我是用paradox作資料庫 資料庫名稱叫abc
我利用程式新增一個暫存檔 名稱為tmp 並建立好欄位了

現在我想利用abc資料庫的其他資料表
將資料挑選 然後一筆一筆放入剛剛建立的暫存檔中

請問我應該怎嚜做阿
要先拉什麼元件到form??
程式該從何開始撰寫
我真的一點頭緒都沒有
可以給我指點一下嗎??
謝謝

affinity
一般會員


發表:1
回覆:4
積分:1
註冊:2007-01-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-03-01 15:17:07 IP:210.202.xxx.xxx 訂閱
我程式裡這樣寫
...
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-03-01 16:09:54 IP:203.70.xxx.xxx 訂閱
建立暫存檔,並存入資料的SQL語法如下:
select * into temp from (來源table) where(條件)
建議盡量使用SQL語法進行操作資料的更新,速度快且易於維護
affinity
一般會員


發表:1
回覆:4
積分:1
註冊:2007-01-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-03-01 16:16:38 IP:210.202.xxx.xxx 訂閱
你的意思是說將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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-03-02 15:55:16 IP:203.70.xxx.xxx 訂閱
沒錯,就是這個意思,sql語法只是字串而已,程式可以拼出所需的sql字串即可,處裡上比用循序逐筆讀取反而簡單多了,舉例來說:

tablename:='庫存檔'
str:='select * form %s'
sql:=format(str,[tablename])

這樣就生成了:selct * form 庫存檔
其他的請自行舉一反三。

affinity
一般會員


發表:1
回覆:4
積分:1
註冊:2007-01-25

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-03-02 18:02:19 IP:210.202.xxx.xxx 訂閱

不好意思 我太笨了 不太懂
那我程式是要改哪...摸不著頭緒
===================引 用 文 章===================
沒錯,就是這個意思,sql語法只是字串而已,程式可以拼出所需的sql字串即可,處裡上比用循序逐筆讀取反而簡單多了,舉例來說:

tablename:='庫存檔'
str:='select * form %s'
sql:=format(str,[tablename])

這樣就生成了:selct * form 庫存檔
其他的請自行舉一反三。

系統時間:2024-05-19 18:33:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!