VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

AFIELD 取得欄位長度問題 ?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
whh



註冊時間: 2010-04-16
文章: 166


第 1 樓

發表發表於: 星期五 八月 08, 2014 9:54 am    文章主題: AFIELD 取得欄位長度問題 ? 引言回覆

1. 參考版上大大的Code
2. 查了AFIELD函數 (3 = Field width)
http://msdn.microsoft.com/en-us/library/7kd8d4ez%28v=vs.80%29.aspx


但是.... 不懂為什麼取出來的欄位長度是錯誤的
http://i.imgur.com/jgHK78V.jpg?1

為什麼我要取這個呢 ?
因為我實在受不了......net C#
做Class 要很智障的人工,去作一個跟Table結構一模一樣的出來=.=
PS.每個單字連在一起的單字還規定要開頭大小 (公司規定)

這個我已解決,我把所有Table欄位都掃出來 Group by 欄位後
怒做了一份字典檔
寫個自動比對轉換程式,字串進去自動檢查轉換!

※不然每次做一個Class,【馬的】感覺要花 30~60分鐘!

------------------------------------------------------------
所以我想寫一個功能
輸入: SQL
產生:
1. 我要的Class 結構
2. 相關建構子(屬性/欄位,如果get 進去日期...等要回傳啥)
3. 各別單字開頭大寫 (已解決)

資料庫是 Oracle 我用 ODBC連線


whh 在 星期五 八月 08, 2014 10:11 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 2 樓

發表發表於: 星期五 八月 08, 2014 10:01 am    文章主題: 引言回覆

若不愛用 AField
那用 COPY STRUCTURE EXTENDED 也行呀
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 3 樓

發表發表於: 星期五 八月 08, 2014 10:06 am    文章主題: 引言回覆

AFILED 查的應該是 "CURSOR" 的欄寬
但 CURSOR 不等於 SQL 上實際資料情況

HELP 說明:
"在特定的工作區、資料表格別名或是目前選取的工作區,檢視並儲存有關資料表格的資訊並傳回在資料表格中的欄位數量。"

但我們都知道可以在 SQL 命令中變更傳回CURSOR的型態.
例如 CONVERT 或是 CAST 函式.


應該是用這個吧
SQLCOLUMNS.

"將指定的資料來源資料表格的欄位名稱清單和有關每個欄位的資訊儲存到 Visual FoxPro 暫存資料表格。"

但這個也不能完全說準.
因為有 ODBC FIELD 對應問題

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙


syntech 在 星期五 八月 08, 2014 10:14 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
whh



註冊時間: 2010-04-16
文章: 166


第 4 樓

發表發表於: 星期五 八月 08, 2014 10:08 am    文章主題: 引言回覆

感謝兩位大大我來努力研究一下 Very Happy
回頂端
檢視會員個人資料 發送私人訊息
whh



註冊時間: 2010-04-16
文章: 166


第 5 樓

發表發表於: 星期五 八月 08, 2014 11:15 am    文章主題: 引言回覆

剛剛測試 SQLCOLUMNS 一樣會抓錯 T.T

gnConnHandle = SQLSTRINGCONNECT("DRIVER={Microsoft ODBC for Oracle};ConnectString=資料庫名稱;Uid=帳號;Pwd=密碼;")
N = SQLCOLUMNS(gnConnHandle, "Table名稱", 'FOXPRO', "MyCursor")
? N
Brower

長度還是錯誤的 12 ,而不是正確的 10

還有什麼辦法可以完全抓準的><

另外 SQLCOLUMNS可能不適用,因為它好像是指定單一 Table ?

***********************************
我的目標是 SQL 會有 Join到其他Table出來的那一包~


不過目前長度沒有也沒關係,只要有最重要得【欄位名稱】&【欄位型別】基本上符合我的需求了
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 6 樓

發表發表於: 星期五 八月 08, 2014 11:25 am    文章主題: 引言回覆

前面有提到:

"但這個也不能完全說準.
因為有 ODBC FIELD 對應問題"


http://msdn.microsoft.com/en-US/en-en/library/windows/apps/xaml/0d6d6c1e(v=vs.80).aspx

因為FOXPRO 是用 VFP 變數型態 <=> ODBC 變數型態 <=> 遠端資料庫變數型態.
三段方式對應,
所以與原本遠端資料庫的變數型態並非 100% 相符.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
whh



註冊時間: 2010-04-16
文章: 166


第 7 樓

發表發表於: 星期五 八月 08, 2014 11:26 am    文章主題: 引言回覆

ckp6250 寫到:
若不愛用 AField
那用 COPY STRUCTURE EXTENDED 也行呀


感謝 ckp大6250 大大
這個 function 方便好多 Smile
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期五 八月 08, 2014 11:27 am    文章主題: 引言回覆

VFP 6 HELP:
----------------

控制資料型態轉換
在遠端伺服器和 Visual FoxPro 之間轉移資料時,多少會遇到伺服器上的資料型態與 Visual FoxPro 中的資料型態有差別的情況,遠端資料來源和 Visual FoxPro 的資料型態完全一一對應的情況是極少的。為了處理這些差別,Visual FoxPro 借助 ODBC 資料型態將遠端資料型態對應為本地 Visual FoxPro 資料型態。透過掌握如何在 ODBC 和 Visual FoxPro 之間對應資料型態,可以瞭解 Visual FoxPro 應用程式如何處理伺服器上的遠端資料。

如果需要,還可以調整在伺服器上或者應用程式中使用的資料型態。可以透過為遠端資料集合建立一個資料集,然後在資料庫中設定 DataType 資料集欄位屬性來忽略預設的 Visual FoxPro 欄位資料型態。DataType 屬性是一個字元屬性,指出一個遠端資料集中每個欄位所需的資料型態。有關 DataType 屬性的詳細內容,請參閱 DBSETPROP( )。

下載和上載遠端資料集資料
從一個遠端 ODBC 資料來源檢索資料時,Visual FoxPro 把每個 ODBC 欄位的資料型態轉換成結果集暫存資料表格中地位平行的 Visual FoxPro 資料型態。下表列出 ODBC 資料來源上提供的資料型態,以及對應的 Visual FoxPro 的資料型態。

遠端欄位的 ODBC 資料型態                  Visual FoxPro 暫存資料表格中欄位資料型態
SQL_CHAR                         字元型態或附註型態1
SQL_VARCHAR
SQL_LONGVARCHAR                    

SQL_BINARY附註型態
SQL_VARBINARY
SQL_LONGVARBINARY                   
SQL_DECIMAL
SQL_NUMERIC 數值型態或貨幣型態2
SQL_BIT 邏輯型態
SQL_TINYINT
SQL_SMALLINT
SQL_INTEGER 整數
SQL_BIGINT 字元型態
SQL_REAL
SQL_FLOAT
SQL_DOUBLE 倍精準數;小數位點由 Visual FoxPro 中 SET DECIMAL 的值決定。
SQL_DATE 日期型態
SQL_TIME 日期時間型態3
SQL_TIMESTAMP 日期時間型態4


1 如果 ODBC 欄位寬度小於暫存資料表格屬性 UseMemoSize 的值,在 Visual FoxPro 暫存資料表格中它將變成一個字元型態欄位;否則,它成為一個附註欄位。2 如果伺服器欄位為 money 資料型態,則在 Visual FoxPro 中它變成貨幣型態。
3 日期預設為1/1/1900。
4 如果 SQL_TIMESTAMP 欄位的值包含秒的小數部份,則在轉換成 Visual FoxPro 的日期時間型態資料時,該小數被截尾。

附註 在 ODBC 資料來源欄位中的 null 值變成 Visual FoxPro 暫存資料表格中的 null 值,應用程式檢索遠端資料時不管 Visual FoxPro 中的 SET NULL 設定。

把 Visual FoxPro 參數轉換成遠端資料集資料型態
如果存於暫存資料表格中的 Visual FoxPro 資料來自遠端資料,當這些資料在遠端伺服器上執行時,會轉換成它們原來的 ODBC 型態。如果透過 SQL pass-through 在遠端伺服器上執行來自 Visual FoxPro 的資料,將進行下面的轉換。

Visual FoxPro 資料型態 ODBC 資料型態
字元型態 SQL_CHAR 或 SQL_LONGVARCHAR1
貨幣型態 SQL_DECIMAL
日期型態 SQL_DATE 或
SQL_TIMESTAMP2
日期時間型態 SQL_TIMESTAMP
倍精準數型態 SQL_DOUBLE
整數型態 SQL_INTEGER
通用型態 SQL_LONGVARBINARY
邏輯型態 SQL_BIT
附註型態 SQL_LONGVARCHAR
數值型態 SQL_DOUBLE


1 如果以 Visual FoxPro 記憶體變數為參數建立了一個寬度小於 255 的運算式,那麼在 ODBC 資料來源中它成為 SQL_CHAR 型態;否則,成為 SQL_LONGVARCHAR 型態。
2 對於除 SQL Server 以外的所有其他 ODBC 資料來源,Visual FoxPro 日期型態資料都被轉換成 SQL_DATE 型態,對於 SQL Server,它被轉換成 SQL_TIMESTAMP 型態。

把 Visual FoxPro 參數對應為遠端資料型態
可把一個 Visual FoxPro 參數值對應為一個特定的遠端資料型態,方法是對該參數設定格式,使其成為一個字元運算式,該字元運算式符合對應的遠端資料型態的語法要求。例如,如果您的伺服器提供日期時間型態資料型態,您可以以該伺服器所支援的日期時間型態格式為您的 Visual FoxPro 參數建立一個字元運算式,在伺服器接收到該參數字的時候,它會嘗試把這個經過設定格式的資料對應為日期時間型態資料。

附註 在傳送一個參數給遠端伺服器時,必須確保 WHERE 子句中的資料型態與參數運算式中所使用的資料型態相符合。

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
whh



註冊時間: 2010-04-16
文章: 166


第 9 樓

發表發表於: 星期五 八月 08, 2014 11:28 am    文章主題: 引言回覆

syntech 寫到:
前面有提到:

"但這個也不能完全說準.
因為有 ODBC FIELD 對應問題"


http://msdn.microsoft.com/en-US/en-en/library/windows/apps/xaml/0d6d6c1e(v=vs.80).aspx

因為FOXPRO 是用 VFP 變數型態 <=> ODBC 變數型態 <=> 遠端資料庫變數型態.
三段方式對應,
所以與原本遠端資料庫的變數型態並非 100% 相符.


嗯 我有看到^^

也要謝謝你提供的方法

然後大大你英文好強.... 看到那個網址我直接貼到google了

慚愧 ._.
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 10 樓

發表發表於: 星期五 八月 08, 2014 11:30 am    文章主題: 引言回覆

VFP 6 HELP:
----------------

控制資料型態轉換
在遠端伺服器和 Visual FoxPro 之間轉移資料時,多少會遇到伺服器上的資料型態與 Visual FoxPro 中的資料型態有差別的情況,遠端資料來源和 Visual FoxPro 的資料型態完全一一對應的情況是極少的。為了處理這些差別,Visual FoxPro 借助 ODBC 資料型態將遠端資料型態對應為本地 Visual FoxPro 資料型態。透過掌握如何在 ODBC 和 Visual FoxPro 之間對應資料型態,可以瞭解 Visual FoxPro 應用程式如何處理伺服器上的遠端資料。

如果需要,還可以調整在伺服器上或者應用程式中使用的資料型態。可以透過為遠端資料集合建立一個資料集,然後在資料庫中設定 DataType 資料集欄位屬性來忽略預設的 Visual FoxPro 欄位資料型態。DataType 屬性是一個字元屬性,指出一個遠端資料集中每個欄位所需的資料型態。有關 DataType 屬性的詳細內容,請參閱 DBSETPROP( )。

下載和上載遠端資料集資料
從一個遠端 ODBC 資料來源檢索資料時,Visual FoxPro 把每個 ODBC 欄位的資料型態轉換成結果集暫存資料表格中地位平行的 Visual FoxPro 資料型態。下表列出 ODBC 資料來源上提供的資料型態,以及對應的 Visual FoxPro 的資料型態。

遠端欄位的 ODBC 資料型態                  Visual FoxPro 暫存資料表格中欄位資料型態
SQL_CHAR                         字元型態或附註型態1
SQL_VARCHAR
SQL_LONGVARCHAR                    

SQL_BINARY                        附註型態
SQL_VARBINARY
SQL_LONGVARBINARY                   

SQL_DECIMAL                       數值型態或貨幣型態2
SQL_NUMERIC                        

SQL_BIT                           邏輯型態

SQL_TINYINT                        整數
SQL_SMALLINT
SQL_INTEGER

SQL_BIGINT                         字元型態

SQL_REAL                          倍精準數;小數位點由 Visual FoxPro 中 SET DECIMAL 的值決定。
SQL_FLOAT
SQL_DOUBLE

SQL_DATE                          日期型態
SQL_TIME                          日期時間型態3
SQL_TIMESTAMP                       日期時間型態4


1 如果 ODBC 欄位寬度小於暫存資料表格屬性 UseMemoSize 的值,在 Visual FoxPro 暫存資料表格中它將變成一個字元型態欄位;否則,它成為一個附註欄位。2 如果伺服器欄位為 money 資料型態,則在 Visual FoxPro 中它變成貨幣型態。
3 日期預設為1/1/1900。
4 如果 SQL_TIMESTAMP 欄位的值包含秒的小數部份,則在轉換成 Visual FoxPro 的日期時間型態資料時,該小數被截尾。

附註 在 ODBC 資料來源欄位中的 null 值變成 Visual FoxPro 暫存資料表格中的 null 值,應用程式檢索遠端資料時不管 Visual FoxPro 中的 SET NULL 設定。


把 Visual FoxPro 參數轉換成遠端資料集資料型態
如果存於暫存資料表格中的 Visual FoxPro 資料來自遠端資料,當這些資料在遠端伺服器上執行時,會轉換成它們原來的 ODBC 型態。如果透過 SQL pass-through 在遠端伺服器上執行來自 Visual FoxPro 的資料,將進行下面的轉換。

Visual FoxPro 資料型態                ODBC 資料型態
字元型態                       SQL_CHAR 或 SQL_LONGVARCHAR1
貨幣型態                       SQL_DECIMAL
日期型態                       SQL_DATE 或SQL_TIMESTAMP2
日期時間型態                     SQL_TIMESTAMP
倍精準數型態                     SQL_DOUBLE
整數型態                       SQL_INTEGER
通用型態                       SQL_LONGVARBINARY
邏輯型態                       SQL_BIT
附註型態                       SQL_LONGVARCHAR
數值型態                       SQL_DOUBLE


1 如果以 Visual FoxPro 記憶體變數為參數建立了一個寬度小於 255 的運算式,那麼在 ODBC 資料來源中它成為 SQL_CHAR 型態;否則,成為 SQL_LONGVARCHAR 型態。
2 對於除 SQL Server 以外的所有其他 ODBC 資料來源,Visual FoxPro 日期型態資料都被轉換成 SQL_DATE 型態,對於 SQL Server,它被轉換成 SQL_TIMESTAMP 型態。

把 Visual FoxPro 參數對應為遠端資料型態
可把一個 Visual FoxPro 參數值對應為一個特定的遠端資料型態,方法是對該參數設定格式,使其成為一個字元運算式,該字元運算式符合對應的遠端資料型態的語法要求。例如,如果您的伺服器提供日期時間型態資料型態,您可以以該伺服器所支援的日期時間型態格式為您的 Visual FoxPro 參數建立一個字元運算式,在伺服器接收到該參數字的時候,它會嘗試把這個經過設定格式的資料對應為日期時間型態資料。

附註 在傳送一個參數給遠端伺服器時,必須確保 WHERE 子句中的資料型態與參數運算式中所使用的資料型態相符合。

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 11 樓

發表發表於: 星期五 八月 08, 2014 11:31 am    文章主題: 引言回覆

VFP 9 HELP:

-----------------
資料型態轉換控制

在遠端伺服器和 Visual FoxPro 之間轉移資料時,多少會遇到伺服器上的資料型態與 Visual FoxPro 中的資料型態有差別的情況。遠端資料來源和 Visual FoxPro 的資料型態完全一一對應的情況是極少的。為了處理這些差別,Visual FoxPro 借助 ODBC 或 ADO 資料型態將遠端資料型態對應為本地 Visual FoxPro 資料型態。透過掌握如何在 ODBC ( 或 ADO) 和 Visual FoxPro 之間對應資料型態,可以瞭解 Visual FoxPro 應用程式如何處理伺服器上的遠端資料。

還可以調整在伺服器上或者應用程式中使用的資料型態。可以透過為遠端資料集合建立一個資料集,然後在資料庫中設定 DataType 資料集欄位屬性來忽略預設的 Visual FoxPro 欄位資料型態。DataType 屬性是一個字元屬性,指出一個遠端資料集中每個欄位所需的資料型態。有關 DataType 屬性的詳細內容,請參閱「DBSETPROP( ) 函數」。

在遠端資料集和 Visual FoxPro 暫存資料表格之間轉換資料型態
從一個遠端 ODBC 或 ADO 資料來源檢索資料時,Visual FoxPro 把每個 ODBC 或 ADO 欄位的資料型態轉換成結果集暫存資料表格中地位平行的 Visual FoxPro 資料型態。

遠端資料型態對應 Visual FoxPro 資料型態
下表列出在遠端欄位資料型態和 Visual FoxPro 暫存資料表格資料型態之間對應的預設資料型態。

ODBC/ADO 資料型態             預設的 Visual FoxPro 暫存資料表格資料型態
SQL_BINARY                 附註型態/二進位大型物件型態、可變長度二進位型態
/ adBinary SQL_VARBINARY
/ adVarbinary


注意:
受 MapBinary 屬性影響的預設型態。相關詳細資訊請參閱「CURSORSETPROP( ) 函數」。



SQL_LONGVARBINARY             通用型態/二進位大型物件型態


注意:
受 MapBinary 屬性影響的預設型態。相關詳細資訊請參閱「CURSORSETPROP( ) 函數」。



adLongVarbinary                附註型態或字元型態

SQL_CHAR                   附註型態1、字元型態/可變長度字元型態
/ adChar SQL_WCHAR
/ adWChar


SQL_LONGVARCHAR              附註型態
/ adLongVarChar SQL_WLONGVARCHAR
/ adLongVarWChar


SQL_VARCHAR                 附註型態1、字元型態/可變長度字元型態
/ adVarChar SQL_WVARCHAR
/ adVarWChar


注意:
受 MapVarchar 屬性影響的預設型態。相關詳細資訊請參閱「CURSORSETPROP( ) 函數」。



SQL_DECIMAL                 貨幣型態2
/ adNumeric SQL_NUMERIC
/ adNumeric


SQL_BIT                    邏輯型態
/ adBoolean


SQL_TINYINT                  整數型態
/ adVarbinary SQL_SMALLINT
/ adSmallInt SQL_INTEGER
/ adInteger


SQL_BIGINT                  字元型態
/ adBigInt


SQL_REAL                   倍精準數型態
/ adSingle SQL_FLOAT
/ adDouble SQL_DOUBLE
/ adSingle


注意:
對於倍精準數,其小數位點由 Visual FoxPro 中 SET DECIMAL 命令的值決定。



SQL_DATE                   日期型態
/ adDBTimeStamp


SQL_TIME                   日期時間型態4
/ adDBTTimeStamp


SQL_TIMESTAMP                日期時間型態3
/ adBinary



1 如果 ODBC/ADO 欄位寬度小於暫存資料表格屬性 UseMemoSize 的值,在 Visual FoxPro 暫存資料表格中它將變成一個字元型態/可變長度字元型態/可變長度二進位型態欄位;否則,它成為一個附註型態/二進位大型物件型態欄位。

2 如果伺服器欄位為 money 資料型態,則在 Visual FoxPro 中它變成貨幣型態。

3 如果 SQL_TIMESTAMP 欄位的值包含秒的小數部份,則在轉換成 Visual FoxPro 的日期時間型態資料時,該小數被截尾。

4 日期預設為 1/1/1900。

下表列出在使用遠端資料集或暫存資料表格配接器物件,以及 ODBC 或 ADO 資料來源和對應的 Visual FoxPro 的資料型態時,可用的資料型態。有關指定暫存資料表格結構描述的詳細內容,請參閱「暫存資料表格配接器的 CursorFill 方法程序」。

ODBC/ADO 資料型態            Visual FoxPro 暫存資料表格可接受的資料型態
SQL_BINARY                二進位大型物件型態、可變長度二進位型態、
/ adBinary SQL_VARBINARY         字元型態、可變長度字元型態、通用型態、附註型態5
/ adVarbinary SQL_LONGVARBINARY
/ adLongVarbinary SQL_CHAR
/ adChar SQL_VARCHAR
/ adVarChar SQL_LONGVARCHAR
/ adLongVarChar


SQL_WCHAR                字元型態、可變長度字元型態、附註型態
/ adWChar SQL_WVARCHAR
/ adVarWChar SQL_WLONGVARCHAR
/ adLongVarWChar


SQL_BIT                  字元型態、可變長度字元型態、邏輯型態
/ adBoolean


SQL_REAL                 字元型態、可變長度字元型態、整數型態、
/ adSingle SQL_FLOAT           數值型態、浮點數型態、倍精準數型態或貨幣型態6
/ adDouble SQL_DOUBLE
/ adSingle SQL_DECIMAL
/ adNumeric SQL_NUMERIC
/ adNumeric SQL_TINYINT
/ adVarbinary SQL_SMALLINT
/ adSmallInt SQL_INTEGER
/ adInteger SQL_BIGINT
/ adBigInt


注意:
對於倍精準數,其小數位點由 Visual FoxPro 中 SET DECIMAL 命令的值決定。



SQL_DATE                  字元型態、可變長度字元型態、日期型態、日期時間型態7
/ adDBTimeStamp SQL_TIMESTAMP
/ adBinary


SQL_TIME / adDBTTimeStamp        字元型態、可變長度字元型態、日期時間型態8



5 如果 ODBC 欄位寬度小於暫存資料表格屬性 UseMemoSize 的值,在 Visual FoxPro 暫存資料表格中它將變成一個字元型態欄位;否則,它成為一個附註欄位。

6 如果伺服器欄位為 money 資料型態,則在 Visual FoxPro 中它變成貨幣型態。

7 如果 SQL_TIMESTAMP 欄位的值包含秒的小數部份,則在轉換成 Visual FoxPro 的日期時間型態資料時,該小數被截尾。

8 日期預設為 1/1/1900。

注意:
在 ODBC 資料來源欄位中的 null 值變成 Visual FoxPro 暫存資料表格中的 null 值,應用程式檢索遠端資料時不管 Visual FoxPro 中的 SET NULL 命令設定。



在 Visual FoxPro 9.0 中,某些 ODBC 和 ADO 資料型態可以被遠端資料集和暫存資料表格配接器物件中的邏輯資料型態所對應。

如果後端值是零,該資料型態是對應到一個邏輯假值 (.F.);而所有其他的值是對應到邏輯真值 (.T.)。當進行更新時,從一個邏輯資料型態到一個整數的對應是後端特定的。對於 ODBC,假值 (.F.) 通常對應到 0 以及真值 (.T.) 通常對應到 1。對於 ADO,假值 (.F.) 通常對應到 0 以及真值 (.T.) 通常對應到 1 或 -1,這取決於命令開始執行時。暫存資料表格配接器的 ConversionFunc 屬性可以被用來加強對應。

對於遠端資料集和暫存資料表格配接器物件,如果 Scale 被設定為零時,ODBC SQL_DECIMAL 和 SQL_NUMERIC 資料型態只能對應到一個邏輯值。

對於暫存資料表格配接器物件,如果 Scale 被設定為零時,ADO 的 adDecimal 和 adNumeric 資料型態只能對應到一個邏輯值。

下表列出 ODBC 和 ADO 資料型態可以對應到邏輯資料型態。

ODBC 資料型態              ADO 資料型態
SQL_TINYINT               adSingle
SQL_SMALLINT              adTinyInt
SQL_INTEGER              adSmallInt
SQL_BIGINT               adInteger
SQL_DECIMAL              adBigInt
SQL_NUMERIC              adUnsignedTinyInt
                     adUnsignedSmallInt
                     adDecimal
                     adNumeric


下表列出在使用遠端資料集和暫存資料表格配接器物件,以及 Visual FoxPro 資料和它們對應的 Visual FoxPro 的資料型態時,可用的資料型態。

Visual FoxPro 原始資料型態       Visual FoxPro 暫存資料表格可接受的資料型態
字元型態、附註型態、通用型態      字元型態、可變長度字元型態、附註型態、通用型態


數值型態、浮點數型態、貨幣型態、     數值型態、浮點數型態、貨幣型態、整數型態、

整數型態、倍精準數型態          倍精準數型態、字元型態、可變長度字元型態

邏輯型態                 邏輯型態、字元型態、可變長度字元型態

日期型態、日期時間型態          字元型態、可變長度字元型態、日期型態、日期時間型態


把 Visual FoxPro 參數值轉換成遠端資料集資料型態
如果存於暫存資料表格中的 Visual FoxPro 資料來自遠端資料,當這些資料在遠端伺服器上執行時,會恢復成它們原來的 ODBC 或 ADO 資料型態。如果透過 SQL 傳遞在遠端伺服器上執行來自 Visual FoxPro 的資料,將進行下面所描述的轉換。

Visual FoxPro 資料型態          ODBC 資料型態
字元型態、可變長度字元型態、附註型態    SQL_CHAR or SQL_LONGVARCHAR9

二進位大型物件型態、可變長度二進位型態   SQL_BINARY or SQL_LONGVARBINARY

貨幣型態                  SQL_DECIMAL

日期型態                  SQL_DATE or SQL_TIMESTAMP10

日期時間型態                SQL_TIMESTAMP

倍精準數型態                SQL_DOUBLE

整數型態                  SQL_INTEGER

通用型態                  SQL_LONGVARBINARY

邏輯型態                  SQL_BIT

數值型態                  SQL_DOUBLE


9 如果以 Visual FoxPro 記憶體變數為參數建立了一個寬度小於 255 的運算式,那麼在 ODBC 資料來源中它成為 SQL_CHAR 型態;否則,成為 SQL_LONGVARCHAR 型態。

10 對於除 SQL Server 以外的所有其他 ODBC 資料來源,Visual FoxPro 日期型態資料都被轉換成 SQL_DATE 型態,對於 SQL Server,它被轉換成 SQL_TIMESTAMP 型態。

把 Visual FoxPro 參數值對應為遠端資料型態
可把一個 Visual FoxPro 參數值對應為一個特定的遠端資料型態,方法是對該參數設定格式,使其成為一個字元運算式,該字元運算式符合對應的遠端資料型態的語法要求。例如,如果您的伺服器提供日期時間型態資料型態,您可以以該伺服器所支援的日期時間型態格式為您的 Visual FoxPro 參數建立一個字元運算式。在伺服器接收到該參數字的時候,它會嘗試把這個經過設定格式的資料對應為日期時間型態資料。

注意:
在傳送一個參數給遠端伺服器時,必須確保 WHERE 子句中的資料型態與參數運算式中所使用的資料型態相符合。

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作