上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Peggie
註冊時間: 2014-10-28 文章: 13
第 1 樓
|
發表於: 星期一 十一月 10, 2014 5:23 pm 文章主題: 請教如果結合名稱相同的DBC資料 |
|
|
請教各位高手
如果有兩個一模一樣的vfp系統,一個建立在A一個建立在B,其資料庫.dbc與.dbf是各自獨立且名稱相同
若現在要在A系統在產生報表時,增加一控制項可產生A與B資料結合的Excel檔,請問我該如何處理?有辦法在A取入B的相同名稱.dbc或.dbf資料嗎? |
|
回頂端 |
|
|
asd89839032
註冊時間: 2012-10-15 文章: 49
第 2 樓
|
發表於: 星期一 十一月 10, 2014 5:49 pm 文章主題: |
|
|
use C:\A.dbf in 0 alias a1
use D:\A.dbf in 0 alias a2
dbf可以這樣用,dbc我不熟,不過應該是可以用類似方法才是 _________________ 菜鳥路過... |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 3 樓
|
發表於: 星期二 十一月 11, 2014 7:41 am 文章主題: |
|
|
試著加入全路徑 或者副檔名看看
use \path1\filea.dbc
use \path2\filea.dbf
讓我想起周潤發的電影
你確定你名字叫 Jon Lee 中國有四億人叫 John Lee
文字那麼多 何苦取同名? |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期二 十一月 11, 2014 1:46 pm 文章主題: |
|
|
asd89839032 寫到: | use C:\A.dbf in 0 alias a1
use D:\A.dbf in 0 alias a2
dbf可以這樣用,dbc我不熟,不過應該是可以用類似方法才是 |
這樣是可以.
可以直接開啟DBC中的某個DBF, _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 5 樓
|
發表於: 星期二 十一月 11, 2014 2:18 pm 文章主題: |
|
|
bx1166 寫到: | 試著加入全路徑 或者副檔名看看
use \path1\filea.dbc
use \path2\filea.dbf
讓我想起周潤發的電影
你確定你名字叫 Jon Lee 中國有四億人叫 John Lee
文字那麼多 何苦取同名? |
VFP 的 OPEN DATABASE 沒有 ALIAS 功能,
所以開啟兩個同名 DBC 問題很大.
以以下示例說明:
代碼: |
OPEN DATABASE c:\syntek6\bms\da\bms.dbc SHARED
OPEN DATABASE c:\syntek1203\bms\da\bms.dbc SHARED
? adatabase(gadatabase)
display memory like gadatabase
|
會得到:
GADATABASE Pub A
( 1, 1) C "BMS"
( 1, 2) C "C:\SYNTEK1203\BMS\DA\BMS.DBC"
( 2, 1) C "BMS"
( 2, 2) C "C:\SYNTEK6\BMS\DA\BMS.DBC"
很難用 SET DATABASE 切換
VFP 6 ~ VFP 9 應該都一樣 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 6 樓
|
發表於: 星期二 十一月 11, 2014 3:49 pm 文章主題: |
|
|
可使用笨方法...
先 use 獨立資料庫.dbf SELECT 出要的資料
再 Open .dbc 應可解決!! |
|
回頂端 |
|
|
小賴
註冊時間: 2004-12-27 文章: 470
第 7 樓
|
發表於: 星期三 十一月 12, 2014 11:44 am 文章主題: |
|
|
不要開 DBC 檔 (Open DataBases) 不行嗎 ?
直接開 DBF 檔 再使用別名 USE A.DBF ALIAS ...
不下 Open DataBases 指令 OK 呀 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 8 樓
|
發表於: 星期三 十一月 12, 2014 11:51 am 文章主題: |
|
|
小賴 寫到: | 不要開 DBC 檔 (Open DataBases) 不行嗎 ?
直接開 DBF 檔 再使用別名 USE A.DBF ALIAS ...
不下 Open DataBases 指令 OK 呀 |
1. 4樓有說明.
可以直接開dbf
直接開dbc裡的dbf,dbc也會自動啟用.
2. 5樓實驗3樓說的開兩個同名 dbc 的情況. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
Peggie
註冊時間: 2014-10-28 文章: 13
第 9 樓
|
發表於: 星期二 十一月 18, 2014 4:05 pm 文章主題: |
|
|
終於發現可使用詳細路徑區分資料庫
例:有二個相同名稱的資料庫"database",各自路徑是c:\data1\database.dbc、c:\data2\database.dbc。資料庫有相同的資料表(dbf)"table"
open base c:\data1\database
open base c:\data2\database
use c:\data1\database!table alias a
use c:\data2\database!table alias b
資料庫名稱重複真的很麻煩
要是開發新系統時,一定要求資料庫名稱不能重覆
另外說明:因為資料庫是多人同時使用,若資料庫已被開啟,無法直接用USE指令開啟該資料庫裡的DBF!需開啟該資料庫後才可使用USE開啟DBF |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 10 樓
|
發表於: 星期二 十一月 18, 2014 4:51 pm 文章主題: |
|
|
你用5樓的方法試看看. 應該會失望.
你的作法跟4,5樓都一樣
use c:\data1\database!table alias a
跟
use c:\data1\table alias a
效果完全一樣. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
Peggie
註冊時間: 2014-10-28 文章: 13
第 11 樓
|
發表於: 星期三 十一月 19, 2014 8:55 am 文章主題: |
|
|
我解說詳細一點好了:
如果兩個資料庫只有一個人在使用,使用4樓大大的用法是行得通的
use c:\data1\table share
但若是c:\data1\database 已被其它人開啟,下了use c:\data1\table share會出現"c:\data1\database.dbc資料庫:檔案存取失敗"
所以要開啟多人存取系統中資料庫下的table,就必須先開啟該資料庫才能開啟其下的table
另外5樓大大的說法是說用set database to ,
若使用use c:\data1\database!table alias a 是不需要切換資料庫就可直接開啟!
貼上我寫的程式碼:
db1 = w:\data1\database
db2 = w:\data2\database
tb1 = db1 + "!table"
tb2 = db2 + "!table"
open database &db1 share
open database &db2 share
close all (註)
use &tb1 share alias tb1
use &tb2 share alias tb2
sele (tb1)
.
sele (tb2)
.
註:因為發現當我使用
open database &db1 share
open database &db2 share
use &tb1 share alias a
use &tb2 share alias b --->這時會出現"別名已被使用"
在檢查sele a ~ sele j發現都已被使用,sele a再輸入browse會出現目前資料庫的table清單供人選擇
為避免這種情況,所以工作區代號不使用a~z
這些只是我好奇有沒有辦法在一支程式中同時開啟同名資料庫下同名資料表做處理所搞出來旳方法。在一邊修改程式時也為前人撰寫此程式沒有考慮到資料互串的問題在抱怨!
其實有更簡單的方式,就是開啟第一個資料庫把要的資料丟到暫存表,關閉後再開啟第二個資料庫把要的資料與暫存表的資料做結合後再產生報表!但若是此系統功能還要繼續使用,就必須開啟原本使用的資料庫。 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1644
第 12 樓
|
發表於: 星期三 十一月 19, 2014 10:55 am 文章主題: |
|
|
Peggie 寫到: |
所以要開啟多人存取系統中資料庫下的table,就必須先開啟該資料庫才能開啟其下的table
|
實在看不懂樓主在講什麼?
開啟同名dbc的同名dbf很平常呀,天天都在做~
不然,多年度比較報表要怎麼玩?
代碼: |
CLOSE DATABASES ALL
USE 0102acc\022acc\Acc!acc6 AGAIN ALIAS aaa IN 0 &&�}102年度的傳票
USE 0103acc\022acc\Acc!acc6 AGAIN ALIAS bbb IN 0 &&�}103年度的傳票
SELECT aaa
BROWSE
SELECT bbb
BROWSE
|
上例是開二個年度的傳票檔, dbc 同名 , dbf 也同名
都ok呀
如果懶得加 dbc , 也行
代碼: |
CLOSE DATABASES ALL
USE 0102acc\022acc\acc6 AGAIN ALIAS aaa IN 0 &&�}102年度的傳票
USE 0103acc\022acc\acc6 AGAIN ALIAS bbb IN 0 &&�}103年度的傳票
SELECT aaa
BROWSE
SELECT bbb
BROWSE
|
|
|
回頂端 |
|
|
Peggie
註冊時間: 2014-10-28 文章: 13
第 13 樓
|
發表於: 星期三 十一月 19, 2014 1:25 pm 文章主題: |
|
|
To ckp6250:
請你請另外個使用者開啟0102acc\022acc\Acc.dbc後,在你自己電腦下USE 0102acc\022acc\Acc!acc6 AGAIN ALIAS aaa IN 0 指令
若無出現異常,我再向你請教你的Acc.dbc及vfp環境參數設定 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1644
第 14 樓
|
發表於: 星期三 十一月 19, 2014 5:35 pm 文章主題: |
|
|
沒事去開 Acc.dbc 做啥呀?
我們的目的在開 dbf
我舉的 code , 再多人同時執行都沒問題
此外 , 您在一樓提到【可產生A與B資料結合的Excel檔】
若是這個目的,那就更簡單了
代碼: |
SELECT * FROM 0102acc\022acc\Acc!Acc6 ;
UNION ALL ;
SELECT * FROM 0103acc\022acc\Acc!Acc6 ;
into cursor Temp
copy to Temp type xls
|
簡單事情簡單做! |
|
回頂端 |
|
|
Peggie
註冊時間: 2014-10-28 文章: 13
第 15 樓
|
發表於: 星期四 十一月 20, 2014 8:12 am 文章主題: |
|
|
To ckp6250
我也不想要用.dbc啊!但是建置N年的系統沒人想去大改。
如果很單純的可以單獨使用dbf檔,我想我不會再這裡發問
所以請你先搞清楚我的原本問題再做回答! |
|
回頂端 |
|
|
|