xBase
2016年11月30日 星期三
DeleteEntry 所發現的問題 type & parameter _DeleteEntry(_cSection, _cEntry)
clear
//set procedure To QIni.cc additive && 解析 ???.ini
//oIni = new Qini( ) && d考慮 路徑 + 檔案名稱+後? 停用唄!
//oIni.Inifile =( _app.iniFile )
//11=WebTemp
DeleteEntry( "UserBDEAliases",'0')
_DeleteEntry( "UserBDEAliases",'0')
FUNCTION DeleteEntry
parameter cSection, cEntry
Local lSuccess, cIniFile
cIniFile = _app.iniFile
lSuccess =false
if type("cSection") == "C"
? "cSection="+ cSection
endif
if type("cEntry") == "C"
? "cEntry="+cEntry
endif
if type("cSection") == "C" .and. type("cEntry") == "C"
lSuccess = WritePrivateProfileString(cSection, cEntry,0, cIniFile)
endif
? lSuccess
RETURN
**********************************************************************
FUNCTION _DeleteEntry(_cSection, _cEntry)
Local lSuccess, cIniFile
cIniFile = _app.iniFile
lSuccess =false
if type("_cSection") == "C"
? "_cSection="+ _cSection
else
? type("_cSection")
endif
if type("_cEntry") == "C"
? " _cEntry="+_cEntry
else
? type("_cEntry")
endif
x = _cSection
y = _cEntry
if type("cSection") == "C" .and. type("cEntry") == "C"
lSuccess = WritePrivateProfileString(cSection, cEntry,0, cIniFile)
else
? 'CCC'
endif
? lSuccess
RETURN
2016年11月25日 星期五
Coreini.cc 轉 Qini.cc
Core.ini
FUNCTION GetSection(cSection)
這個功能 是讀出 ???.ini 的 Section 裡面的 ENTRY & 值
透過 API GetPrivateProfileSection(cSection, cBuffer, nX, cIniFile )的方式 轉換 成 Single.
不知道 'Single' 是何意 ?
透過 dBase
for n = 0 to x
oB.setByte( n*2, oA.getByte(n) )
next
轉成 Double
目前的問題是 從 ???.INI 轉進去的資料,經過這段過程 , 轉出來的東西 會變少
少掉 1/3 左右
FUNCTION GetSection(cSection)
這個功能 是讀出 ???.ini 的 Section 裡面的 ENTRY & 值
透過 API GetPrivateProfileSection(cSection, cBuffer, nX, cIniFile )的方式 轉換 成 Single.
不知道 'Single' 是何意 ?
透過 dBase
for n = 0 to x
oB.setByte( n*2, oA.getByte(n) )
next
轉成 Double
目前的問題是 從 ???.INI 轉進去的資料,經過這段過程 , 轉出來的東西 會變少
少掉 1/3 左右
2016年11月15日 星期二
xBase 單一資料表 處理方式
料件基本資料 的更新(考慮相關的歷史異動)
開發部分
採購部分
營業部分
生管部分
物管部分
Xbase 的單一資料表 處理部分
利用 trigger 完成 單一資料表的新增、更改、刪除,
建立 一個 5 個欄位,都是 1-3 文字屬性的 欄位,4- 5欄位 日期欄位
建立檢查系統(確校系統)
處理單一資料表的相關問題
XbaseA單一基本資料表(XbaseA_m 異動紀錄表)。(<=5)
欄位1 系統代號(10)
欄位2 代號(10)
欄位3 說明1(50)
欄位4 說明2(50)
欄位6 建立日期(smalldatetime)
欄位7 停用日期(smalldatetime)
欄位8 數值(number 18,3)
欄位9 rid
欄位10 啟用日期(smalldatetime) 2016/11/16 添加
欄位11 封存日期(smalldatetime) 2016/11/16 添加
XbaseA_m
欄位1 系統代號(10)
欄位2 代號(10)
欄位3 說明1(50)
欄位4 說明2(50)
欄位6 建立日期(smalldatetime)
欄位7 停用日期(smalldatetime)
欄位8 數值(number 18,3)
欄位9 rid
欄位10 建立者
欄位11 電腦名稱
欄位12異動狀態(新增、更改、刪除)
欄位13 啟用日期(smalldatetime) 2016/11/16 添加
欄位14 封存日期(smalldatetime) 2016/11/16 添加
封存就是移動到 封存資料表 & 封存資料庫
XabseB基本料件 基本單一資料表(XbaseB_m 異動紀錄表)。
考慮 資料表太大 在分割 如下
開發部分(XbaseB_ma 異動紀錄表)
採購部分(XbaseB_mb 異動紀錄表)
營業部分(XbaseB_mc 異動紀錄表)
生管部分(XbaseB_md 異動紀錄表)
物管部分(XbaseB_me 異動紀錄表)
XbaseC客戶&廠商 基本單一資料表。
XbaseD會計科目 基本單一料表。
XbaseX 異動紀錄資料表
各個單一資料表系統
利用 檢視 + 字串調整+前端控制字串輸入
呈現
結果。
2016年11月13日 星期日
關於 dB2K 中文方面的問題
關於 dB2K 中文方面的問題: (最後更新日期: 2002/12/11 下午 12:18:35 )
Q1). 解決 dB2K RAD 中文問題:
A1.1). 在 db2k.ini 中加入:
[CommandSettings]
ldriver=DB950TW0
A1.2). 修改 BDE 中的設定:
BDE -> Databases -> ????? (依照所使用的選項而定) -> LANGDRIVER -> 設定為 dbase CHT cp950.
BDE -> Configurage -> Driver 與 Native 中也要跟這修改語系為 dBase CHT cp950.
A1.1). 在 db2k.ini 中加入:
[CommandSettings]
ldriver=DB950TW0
A1.2). 修改 BDE 中的設定:
BDE -> Databases -> ????? (依照所使用的選項而定) -> LANGDRIVER -> 設定為 dbase CHT cp950.
BDE -> Configurage -> Driver 與 Native 中也要跟這修改語系為 dBase CHT cp950.
Q2). 修改 db2k RAD 中顯示字形大小、名稱問題:
在 db2k.ini 中修改(沒有就新增)下列 Session:
[DefaultFonts]
Application=新細明體,10
Controls=新細明體,10
在 db2k.ini 中修改(沒有就新增)下列 Session:
[DefaultFonts]
Application=新細明體,10
Controls=新細明體,10
Q3). 在 db2k 中如何使用 MySQL ??
A3). 先用 ODBC32 建立一個 MySQL DSN:A).控制台 -> ODBC32 -> 使用者資料來源名稱 -> 新增 -> 自己設定一個 DSN -> 例如取名為 ss-MySQL, B).控制台 -> BDE -> Databases -> New 新增一個資料庫連結 -> ODBC DSN 處填入 ss-MySQL ( 就是 ODBC32 設定的 DNS).
C).在 db2k RAD 中的 database 元件上 -> databaseName -> 填入 ss-MySQL -> 這樣子就完成了連結!
A3). 先用 ODBC32 建立一個 MySQL DSN:A).控制台 -> ODBC32 -> 使用者資料來源名稱 -> 新增 -> 自己設定一個 DSN -> 例如取名為 ss-MySQL, B).控制台 -> BDE -> Databases -> New 新增一個資料庫連結 -> ODBC DSN 處填入 ss-MySQL ( 就是 ODBC32 設定的 DNS).
C).在 db2k RAD 中的 database 元件上 -> databaseName -> 填入 ss-MySQL -> 這樣子就完成了連結!
Q4). MySQL 中文字處理問題:
A4). 如果你的 MySQL 是安裝在 Windows 平台的話,在 %Win% 目錄下的 My.ini 檔案中加入下列資料
[mysqld]
A4). 如果你的 MySQL 是安裝在 Windows 平台的話,在 %Win% 目錄下的 My.ini 檔案中加入下列資料
[mysqld]
default-character-set =
big5
[client]
default-character-set =
big5
如果你的 MySQL 安裝在 Linux 平台的話,請抓取 Source 重新編譯,
在編譯時,記得加入一行 --with-charset=big5 <---這行就是重點.
在編譯時,記得加入一行 --with-charset=big5 <---這行就是重點.
Q5). 關於中文字在 db2k 中的問題:
A5). dbase 2000 以後的版本採用 Unicode 編碼方式,所以,您在 db2k 中所使用的「字串」,都是 Unicode,當然,你也可以將非中文字串存入字串變數中,但是,重點在於,如何對這些字串做 DBCS/SBCS 轉換呢?所謂的 DBCS 就是 Double Byte Character Set -> 就是每個中文字或是英文字,都是用 2Bytes 來表示,
Unicode 就是 DBCS 格式,和我們以前所認識的中英文編碼方式不同,
以前,我們所認識的中英文字編碼原則是,A -> Ascii code -> 65, 中 -> Ascii code ->164, 164, 兩 Byte
但是,db2k 採用的是 Unicode/DBCS,所以,上述的資料就不在是單純的 65, 164, 164 ,而變成
A -> 65, 00 中 -> 45, 78
上述方法,你可以用下列方式來驗證:
cStr = "A中文"
? cStr.getByte(0) // 65
? cStr.getByte(1) // 0
? cStr.getByte(2) // 45
? cStr.getByte(3) // 78
? Asc( "A" ) // 65
? Asc( "中" ) // 42148
很奇怪吧?中文字的「中」為何他的 ASCII 會是: 42148 ?
我來說個轉換方法:
原本 '中' 字的 SBCS ASCII Code 為: 164(HiByte)/164(LoByte),
164 * 254 + 164 ( HiByte * 256 + LoByte ) = 42148
? Chr( 42148 ) // '中'
A5). dbase 2000 以後的版本採用 Unicode 編碼方式,所以,您在 db2k 中所使用的「字串」,都是 Unicode,當然,你也可以將非中文字串存入字串變數中,但是,重點在於,如何對這些字串做 DBCS/SBCS 轉換呢?所謂的 DBCS 就是 Double Byte Character Set -> 就是每個中文字或是英文字,都是用 2Bytes 來表示,
Unicode 就是 DBCS 格式,和我們以前所認識的中英文編碼方式不同,
以前,我們所認識的中英文字編碼原則是,A -> Ascii code -> 65, 中 -> Ascii code ->164, 164, 兩 Byte
但是,db2k 採用的是 Unicode/DBCS,所以,上述的資料就不在是單純的 65, 164, 164 ,而變成
A -> 65, 00 中 -> 45, 78
上述方法,你可以用下列方式來驗證:
cStr = "A中文"
? cStr.getByte(0) // 65
? cStr.getByte(1) // 0
? cStr.getByte(2) // 45
? cStr.getByte(3) // 78
? Asc( "A" ) // 65
? Asc( "中" ) // 42148
很奇怪吧?中文字的「中」為何他的 ASCII 會是: 42148 ?
我來說個轉換方法:
原本 '中' 字的 SBCS ASCII Code 為: 164(HiByte)/164(LoByte),
164 * 254 + 164 ( HiByte * 256 + LoByte ) = 42148
? Chr( 42148 ) // '中'
而: SBCS 就是 Single Byte
Character Set ->
就是我們以前所認識的 'A中文' -> ASCII -> 65, 164, 164 在一些 WinAPI 中,有些 API Name 尾部有個 'A',
例如 'GetProFileStringA', 代表著他傳回的資料就是 SBCS 資料,如果我們要取用這些傳回的資料,你就必須將這個資料從 SBCS to DBCS 轉換,這樣子 db2k 才看得懂.
另外,Windows 9x 系統採用的 SBCS 編碼方式,Windows NT 以上的採用 DBCS 編碼方式,這點要特別注意.
就是我們以前所認識的 'A中文' -> ASCII -> 65, 164, 164 在一些 WinAPI 中,有些 API Name 尾部有個 'A',
例如 'GetProFileStringA', 代表著他傳回的資料就是 SBCS 資料,如果我們要取用這些傳回的資料,你就必須將這個資料從 SBCS to DBCS 轉換,這樣子 db2k 才看得懂.
另外,Windows 9x 系統採用的 SBCS 編碼方式,Windows NT 以上的採用 DBCS 編碼方式,這點要特別注意.
1-7 異動單據建立作業 應該 拆分為
1-7 異動單據建立作業 應該 拆分為
1-7-1用料出庫
申請 作業。(可加入 MRPII 的觀念)。
1-7-11用料出庫 作業
1-7-2餘料入庫
申請 作業。
1-7-21餘料入庫 作業 (參考領料出庫單)。
1-7-3調撥 申請
作業。
1-7-31調撥 作業
1-7-4盤盈入庫 申請
作業。
1-7-41盤盈入庫 作業。
1-7-5盤虧出庫 申請
作業。
1-7-51盤虧出庫 作業。
倉庫作業 資料表 利用 出庫庫位、入庫庫位 區分。(一個數字欄位)
訂閱:
文章 (Atom)