 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 1 樓
|
發表於: 星期五 八月 13, 2010 10:44 am 文章主題: vfp的select into |
|
|
想请教下,vfp的select * into 表b form 表A,其中表b一定要临时表么?我运行以下语句在编译时会提示语法错误,为什么呢?
查询原句是:((T_DTL) 是已经构建表结构的表)
select dd.SERIAL,dd.DO_NO,dd.TON_PN,dd.QTY,dd.PO_NO,t2.part_name,t2.cust_pn into (T_DTL) from dd inner join t2 on dd.ton_pn=?t2.ton_pn
谢谢. _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
richshih
註冊時間: 2007-10-11 文章: 153
第 2 樓
|
發表於: 星期五 八月 13, 2010 10:56 am 文章主題: |
|
|
INTO TABLE (會儲存於硬碟可讀寫)
INTO CURSOR(臨時的暫存資料表格,不會儲存於硬碟,除非有READWRITE否則不可讀寫) |
|
回頂端 |
|
 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 3 樓
|
發表於: 星期五 八月 13, 2010 11:27 am 文章主題: |
|
|
richshih 寫到: | INTO TABLE (會儲存於硬碟可讀寫)
INTO CURSOR(臨時的暫存資料表格,不會儲存於硬碟,除非有READWRITE否則不可讀寫) |
謝謝rich大大
那爲什麽我在vfp中select into 表 會提示出錯呢 而into cursor 表就沒問題 _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期五 八月 13, 2010 11:29 am 文章主題: |
|
|
為什麼你這麼肯定是 into table/into cursor 的錯 ?
為什麼我怎麼看也是語法錯誤? _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 5 樓
|
發表於: 星期五 八月 13, 2010 11:48 am 文章主題: |
|
|
syntech 寫到: | 為什麼你這麼肯定是 into table/into cursor 的錯 ?
為什麼我怎麼看也是語法錯誤? |
syntech大大,我在調試程序時,走到select .. 的語句就跳出"syntax error"錯誤,而且僅當into 表時會有這樣的錯誤,而into cursor 可以運行通過.
我的本意是想通過兩個表的內連接后把數據導入已存在的另一個表中,所以考慮使用select into 語句,但運行就出現了以上的錯誤.不知道是哪出了問題,請賜教.
順便想請教下各位大大,vfp從表a複製數據到表b(以構建)有無其他方法,謝謝.[/img] _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
pilipala
註冊時間: 2009-05-13 文章: 75
第 6 樓
|
發表於: 星期五 八月 13, 2010 2:27 pm 文章主題: |
|
|
引言回覆: |
走到select .. 的語句就跳出"syntax error"錯誤,而且僅當into 表時會有這樣的錯誤,而into cursor 可以運行通過.
|
因為 VFP 沒有 Select * into XX From DBF 的語法 ,只有
Select * From DBF into Cursor XX 或是
Select * From DBF into Table XX |
|
回頂端 |
|
 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 7 樓
|
發表於: 星期五 八月 13, 2010 3:18 pm 文章主題: |
|
|
pilipala 寫到: | 引言回覆: |
走到select .. 的語句就跳出"syntax error"錯誤,而且僅當into 表時會有這樣的錯誤,而into cursor 可以運行通過.
|
因為 VFP 沒有 Select * into XX From DBF 的語法 ,只有
Select * From DBF into Cursor XX 或是
Select * From DBF into Table XX |
pilipala,3q3q.我發現我的select漏了 table 囧,謝謝各位~! _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 8 樓
|
發表於: 星期五 八月 13, 2010 3:43 pm 文章主題: |
|
|
在弱弱的問下,Select * From DBF into Table XX 的xx須必是物理存在的表么?可以用有結構的臨時表部,謝謝 _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
區榮熾
註冊時間: 2005-11-14 文章: 191
第 9 樓
|
發表於: 星期五 八月 13, 2010 10:34 pm 文章主題: |
|
|
xzg 寫到: | 在弱弱的問下,Select * From DBF into Table XX 的xx須必是物理存在的表么?可以用有結構的臨時表部,謝謝 |
答案就在 <請再仔細的看6樓所寫的>..........眼看不清,就對號入座吧!
into xx (語法錯誤)(因為VFP不清楚你要存到那裡?)
into table xx (要寫入 ????)
into Cursor xx (要寫入 ????)
???? 代表的意思應該清楚了吧! |
|
回頂端 |
|
 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 10 樓
|
發表於: 星期六 八月 14, 2010 3:10 pm 文章主題: |
|
|
區榮熾 寫到: | xzg 寫到: | 在弱弱的問下,Select * From DBF into Table XX 的xx須必是物理存在的表么?可以用有結構的臨時表部,謝謝 |
答案就在 <請再仔細的看6樓所寫的>..........眼看不清,就對號入座吧!
into xx (語法錯誤)(因為VFP不清楚你要存到那裡?)
into table xx (要寫入 ????)
into Cursor xx (要寫入 ????)
???? 代表的意思應該清楚了吧! |
額,是我沒有表達清楚,區大大說的我已經清楚了,我想問的是在load我建立了個臨時表A,在後面的程序我想把其他表的內容複製到表A中,用select......into table A,這種方法是不是不可行,也就是into table必須是物理存在的表,into cursor是在select后新建的臨時表? _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
區榮熾
註冊時間: 2005-11-14 文章: 191
第 11 樓
|
發表於: 星期六 八月 14, 2010 9:09 pm 文章主題: |
|
|
xzg 寫到: | 區榮熾 寫到: | xzg 寫到: | 在弱弱的問下,Select * From DBF into Table XX 的xx須必是物理存在的表么?可以用有結構的臨時表部,謝謝 |
答案就在 <請再仔細的看6樓所寫的>..........眼看不清,就對號入座吧!
into xx (語法錯誤)(因為VFP不清楚你要存到那裡?)
into table xx (要寫入 ????)
into Cursor xx (要寫入 ????)
???? 代表的意思應該清楚了吧! |
額,是我沒有表達清楚,區大大說的我已經清楚了,我想問的是在load我建立了個臨時表A,在後面的程序我想把其他表的內容複製到表A中,用select......into table A,這種方法是不是不可行,也就是into table必須是物理存在的表,into cursor是在select后新建的臨時表? |
好像你對 Table 及 Cursor 這二種的意義沒有很明白的,但又不去深研究,而一直在原地轉轉的........結果又顯示出你的不懂而叫懂,好,請你再仔細品味一下下述....
Table 的用途是一般運用的資料表(含在資料庫內或獨立的資料表,存儲需要常用的資料,可更新,增加,刪除......等的操作)
Cursor 的用途是作中途運作而無需留存在磁碟機上,程序結束 Cursor 就結束,來去都無影,因是用記憶體跑的.(因是唯讀,故不能與 Table 作相同的資料更新等的動作, 但 Create Cursor 不含在內).
你看到這,希望能分別出 into Table 或 into Cursor 的正確選擇了罷!
VFP 的強項就是資料庫,慢慢的摸索吧! .........很吸引人的啊! |
|
回頂端 |
|
 |
chilin

註冊時間: 2003-10-01 文章: 79 來自: Taipei,Taiwan
第 12 樓
|
發表於: 星期日 八月 15, 2010 9:54 pm 文章主題: |
|
|
VFP8.0以上
假設實體資料表MYDBF,欄位與資料如下
FLD1 FLD2 FLD3
A B C
A A A
B C A
C D B
.....
.....
SELECT 0
CREATE CURSOR T1 (FLD1 C(1),FLD2 C(1),FLD3 C(1)) &&暫存資料表T1
SELECT 0
CREATE CURSOR T2 (FLD3 C(1),FLD2 C(1),FLD1 C(1)) &&暫存資料表T2
若要將實體資料表MYDBF欄位FLD1="A"的資料複製到暫存表T1,T2
方法1:
SELECT T1
APPEND FROM MYDBF FOR FLD1=[A]
SELECT T2
APPEND FROM MYDBF FOR FLD1=[A]
方法2:
TC=[C:\TEMP\]+"_"+RIGHT(SYS(2015),7)
SELECT FLD1,FLD2,FLD3 FROM MYDBF WHERE FLD1=[A] INTO CURSOR TC
COPY TO (TC)
SELECT T1
APPEND FROM (TC)
SELECT T2
APPEND FROM (TC)
ERASE(TC+[.*])
USE IN TC
USE IN MYDBF
方法3:
SELECT FLD1,FLD2,FLD3 FROM MYDBF WHERE FLD1=[A] INTO ARRAY T_ARY
USE IN MYDBF
SELECT T1
IF TYPE([T_ARY])#[U]
APPEND FROM ARRAY T_ARY
RELEASE T_ARY
ENDIF
SELECT FLD3,FLD2,FLD1 FROM MYDBF WHERE FLD1=[A] INTO ARRAY T_ARY
USE IN MYDBF
SELECT T2
IF TYPE([T_ARY])#[U]
APPEND FROM ARRAY T_ARY
RELEASE T_ARY
ENDIF
注意:欄位順序必需一樣,欄位數量不一定要一樣
方法4:
直接使用SQL語法
INSERT INTO T1 SELECT FLD1,FLD2,FLD3 FROM MYDBF WHERE FLD1=[A]
INSERT INTO T2 SELECT FLD3,FLD2,FLD1 FROM MYDBF WHERE FLD1=[A]
USE IN MYDBF
注意:欄位順序及數量必需一樣
個人比較建議用方法4 _________________ 一個喜愛Latte的男人 |
|
回頂端 |
|
 |
xzg
註冊時間: 2010-07-26 文章: 29 來自: 深圳
第 13 樓
|
發表於: 星期一 八月 16, 2010 9:02 am 文章主題: |
|
|
學習了,謝謝各位大大 _________________ 學習,學習,再學習 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|