如何將SQL轉成DBF(fox pro用) |
答題得分者是:dinokuo
|
gagne
一般會員 ![]() ![]() 發表:3 回覆:12 積分:3 註冊:2002-04-15 發送簡訊給我 |
|
dinokuo
初階會員 ![]() ![]() 發表:3 回覆:29 積分:31 註冊:2002-09-11 發送簡訊給我 |
|
lwf
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2002-07-11 發送簡訊給我 |
|
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
gagne
一般會員 ![]() ![]() 發表:3 回覆:12 積分:3 註冊:2002-04-15 發送簡訊給我 |
引言: 那就先在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 發送簡訊給我 |
引言: 那就先在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 發送簡訊給我 |
引言: 我大概弄出來了,但我發現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 發送簡訊給我 |
|
gagne
一般會員 ![]() ![]() 發表:3 回覆:12 積分:3 註冊:2002-04-15 發送簡訊給我 |
|
dinokuo
初階會員 ![]() ![]() 發表:3 回覆:29 積分:31 註冊:2002-09-11 發送簡訊給我 |
|
isthatu
初階會員 ![]() ![]() 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
引言:------------------------------------------------ 奇怪你怎麼弄出來的 照他的方法 我一直都出現 Illegal character in input file: ' ' ($A140) (BDE建立這個Alias????) 有啥麼特別要注意的嗎? ---------------------------------------------------引言: 那就先在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檔
------
BCDEFHIJKLMNOPQRSTUVWXZ |
gagne
一般會員 ![]() ![]() 發表:3 回覆:12 積分:3 註冊:2002-04-15 發送簡訊給我 |
------------------------------------------------
奇怪你怎麼弄出來的
照他的方法 我一直都出現
Illegal character in input file: ' ' ($A140)
(BDE建立這個Alias????)
有啥麼特別要注意的嗎?
---------------------------------------------------
如果直接在程式碼中設定databse 或table
會出現上述錯誤訊息..所以我的作法就是
直接key在TTable的properties中
而不在程式碼中指定
不過我也希望能在程式碼中指定,不然就無法產生不同的table了... 發表人 - gagne 於 2002/11/18 14:04:18
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |