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

如何將SQL轉成DBF(fox pro用)

答題得分者是:dinokuo
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-07 14:15:04 IP:61.221.xxx.xxx 未訂閱
請教各位大大 我現在需要把MSSQL中的資料,select 出來後 轉成一個DBF檔 請問我該如何處理,轉成文字檔我是試過,但轉DBF我就不會了 有人做過嗎?幫個忙吧~~
dinokuo
初階會員


發表:3
回覆:29
積分:31
註冊:2002-09-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-07 14:57:41 IP:61.218.xxx.xxx 未訂閱
簡單..簡單.. 先利用TQuery(當是Query1)元件把資料先select 出來 再用一個TTable元件 with Table1 do begin DatabaseName := 'C:\WINDOWS\TEMP'; //填你要存DBF的路徑 TableType := ttDBase; TableName := 'Load.dbf'; //填你要存的檔案名稱 BatchMove(Query1, batCopy); end; 簡單吧 讓我得分吧.. 謝謝!!
lwf
一般會員


發表:1
回覆:1
積分:0
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-07 15:36:13 IP:210.66.xxx.xxx 未訂閱
如果你是要整個 table 轉至 dbase 可直接使用 datadump 即可
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-08 08:09:02 IP:61.219.xxx.xxx 未訂閱
procedure CreateTempDBF(sql,tblname: string; db:HDBIDB; dbtype: string='DBASE'); var hStmt: hDBIStmt; hQryCur, hNewCur: hDBICur; begin hQryCur := nil; hNewCur := nil; hStmt := nil; try Check(DbiQAlloc(Db, QrylangSQL, hStmt)); Check(DbiQPrepare(hStmt, PChar(sql))); Check(DbiQExec(hStmt, @hQryCur)); // Check(DbiQInstantiateAnswer(hStmt, hQryCur, PChar(TblName), szDBASE, True, @hNewCur)); Check(DbiQInstantiateAnswer(hStmt,hQryCur,PChar(TblName),PChar(dbtype), True,@hNewCur)); finally if hStmt<>nil then Check(DbiQFree(hStmt)); if hNewCur<>nil then Check(DbiCloseCursor(hNewCur)); end; end;
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-08 11:10:09 IP:61.221.xxx.xxx 未訂閱
with Table1 do begin DatabaseName := 'C:\WINDOWS\TEMP'; //填你要存DBF的路徑 TableType := ttDBase; TableName := 'Load.dbf'; //填你要存的檔案名稱 BatchMove(Query1, batCopy); end; 好像不行耶~~~~ databaseName 好像不能輸入路徑 會有錯誤訊息 [Error] Unit1.pas(34): Illegal character in input file: ' ' ($A140)
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-08 14:46:01 IP:61.221.xxx.xxx 未訂閱
引言: procedure CreateTempDBF(sql,tblname: string; db:HDBIDB; dbtype: string='DBASE'); var hStmt: hDBIStmt; hQryCur, hNewCur: hDBICur; begin hQryCur := nil; hNewCur := nil; hStmt := nil; try Check(DbiQAlloc(Db, QrylangSQL, hStmt)); Check(DbiQPrepare(hStmt, PChar(sql))); Check(DbiQExec(hStmt, @hQryCur)); // Check(DbiQInstantiateAnswer(hStmt, hQryCur, PChar(TblName), szDBASE, True, @hNewCur)); Check(DbiQInstantiateAnswer(hStmt,hQryCur,PChar(TblName),PChar(dbtype), True,@hNewCur)); finally if hStmt<>nil then Check(DbiQFree(hStmt)); if hNewCur<>nil then Check(DbiCloseCursor(hNewCur)); end; end;
不好意思...小弟看不太懂.. 能不能稍微講解一下 因為小弟是要寫成ASP用的COM,實在是沒什麼概念
dinokuo
初階會員


發表:3
回覆:29
積分:31
註冊:2002-09-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-12 08:21:52 IP:61.218.xxx.xxx 未訂閱
那就先在BDE建立一個Alisa吧!!! with Table1 do begin DatabaseName := 'LOCAL'; //請先在BDE建立這個Alias TableType := ttDBase; TableName := 'Load.dbf'; //填你要存的檔案名稱 BatchMove(Query1, batCopy); end;
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-13 10:25:40 IP:61.221.xxx.xxx 未訂閱
引言: 那就先在BDE建立一個Alisa吧!!! with Table1 do begin DatabaseName := 'LOCAL'; //請先在BDE建立這個Alias TableType := ttDBase; TableName := 'Load.dbf'; //填你要存的檔案名稱 BatchMove(Query1, batCopy); end;
唉~~小弟資質愚鈍,還是弄不出來 [Error] Unit1.pas(41): Incompatible types: 'TBDEDataSet' and 'TDataSource' BatchMove(TBDEDataSet;) ^^^^^^^^^^ TBDEDataSet 和 TDataSet有什麼不一樣?
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-11-14 14:59:36 IP:61.221.xxx.xxx 未訂閱
引言: 那就先在BDE建立一個Alisa吧!!! with Table1 do begin DatabaseName := 'LOCAL'; //請先在BDE建立這個Alias TableType := ttDBase; TableName := 'Load.dbf'; //填你要存的檔案名稱 BatchMove(Query1, batCopy); end;
我大概弄出來了,但我發現DBF似乎要先存在 也就是無法建立一個新的DBF 同時就算我用原本之DBF,也沒辦法下batdelete,batappend 會出現錯誤訊息 "Destination must be indexed" 要怎樣才能把本來DBF中的東西刪掉,並覆蓋呢? 又要如何才能每次產生一個新的DBF檔
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-11-14 16:13:03 IP:211.21.xxx.xxx 未訂閱
引言: 我大概弄出來了,但我發現DBF似乎要先存在 也就是無法建立一個新的DBF 同時就算我用原本之DBF,也沒辦法下batdelete,batappend 會出現錯誤訊息 "Destination must be indexed" 要怎樣才能把本來DBF中的東西刪掉,並覆蓋呢? 又要如何才能每次產生一個新的DBF檔
怎麼會呢~基本上只要有BDE存在~你就可以隨意產生一個新的DBF檔啊~ 提供我的做法~ 1.在FORM上放一個TABLE元件 2.點選TABLE的FieldDefs屬性~並建立好你所需要的欄位~ 3.TABLE的DATABASENAME屬性填入你要存放的路徑~ 4.填入TABLENAME 5.最後再下一道聖旨~Table1.CreateTable; 6.OK~完成~收工~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
dinokuo
初階會員


發表:3
回覆:29
積分:31
註冊:2002-09-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-11-15 09:01:52 IP:61.218.xxx.xxx 未訂閱
我都是用Table1(Query1,batCopy)來產生新的dbf檔 至於要刪除dbf檔的資料 建議可以用EmptyTable 不過要先改成獨佔的模式 Exclusive 如果你把程式寄給我 我比較好幫你改 發表人 - dinokuo 於 2002/11/15 09:04:49
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-11-15 09:45:55 IP:61.221.xxx.xxx 未訂閱
引言: 我都是用Table1(Query1,batCopy)來產生新的dbf檔 至於要刪除dbf檔的資料 建議可以用EmptyTable 不過要先改成獨佔的模式 Exclusive 如果你把程式寄給我 我比較好幫你改 發表人 - dinokuo 於 2002/11/15 09:04:49
大至上都弄好了...只是不曉得EmptyTable 及獨佔的模式 Exclusive要去那設定 程式因為有關連到我的MSSQL SERVER怕您那邊不好處理
dinokuo
初階會員


發表:3
回覆:29
積分:31
註冊:2002-09-11

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-11-18 08:21:45 IP:61.218.xxx.xxx 未訂閱
TTable 有一個property 叫 Exclusive 至於EmptyTable 是一個 method 可以看看Delphi 的Help 寫的很清楚哦.... 值得參考!!!
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-11-18 10:18:54 IP:202.145.xxx.xxx 未訂閱
引言:
引言: 那就先在BDE建立一個Alisa吧!!! with Table1 do begin DatabaseName := 'LOCAL'; //請先在BDE建立這個Alias TableType := ttDBase; TableName := 'Load.dbf'; //填你要存的檔案名稱 BatchMove(Query1, batCopy); end;
我大概弄出來了,但我發現DBF似乎要先存在 也就是無法建立一個新的DBF 同時就算我用原本之DBF,也沒辦法下batdelete,batappend 會出現錯誤訊息 "Destination must be indexed" 要怎樣才能把本來DBF中的東西刪掉,並覆蓋呢? 又要如何才能每次產生一個新的DBF檔
------------------------------------------------ 奇怪你怎麼弄出來的 照他的方法 我一直都出現 Illegal character in input file: ' ' ($A140) (BDE建立這個Alias????) 有啥麼特別要注意的嗎? ---------------------------------------------------
------
BCDEFHIJKLMNOPQRSTUVWXZ
gagne
一般會員


發表:3
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-11-18 11:48:29 IP:61.221.xxx.xxx 未訂閱
------------------------------------------------ 奇怪你怎麼弄出來的 照他的方法 我一直都出現 Illegal character in input file: ' ' ($A140) (BDE建立這個Alias????) 有啥麼特別要注意的嗎? --------------------------------------------------- 如果直接在程式碼中設定databse 或table 會出現上述錯誤訊息..所以我的作法就是 直接key在TTable的properties中 而不在程式碼中指定 不過我也希望能在程式碼中指定,不然就無法產生不同的table了... 發表人 - gagne 於 2002/11/18 14:04:18
系統時間:2024-05-14 16:51:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!