|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Darren
註冊時間: 2007-10-18 文章: 57
第 1 樓
|
發表於: 星期六 十月 17, 2015 8:13 pm 文章主題: 如何在 vfp9 通過 view update '0000-00-00' 去 mysql date column |
|
|
請教各位高手
我用的是 vfp 9.0 sp2 和 mysql 5.0.37
我在mysql里建立了一個 table, 如下
CREATE TABLE `policy` (
`policy_id` int(10) unsigned NOT NULL auto_increment,
`ref_no` varchar(10) NOT NULL default '',
`effective_date` date NOT NULL default '0000-00-00',
`expire_date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`policy_id`),
KEY `idx_ref_no` (`ref_no`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
然後, 我在vfp的view建立了一個remote view ( 名字是view_policy ), 如下
SELECT Policy.policy_id, Policy.ref_no,;
Policy.effective_date, Policy.expire_date;
FROM ;
policy Policy;
WHERE Policy.ref_no = ( ?cRef_No );
ORDER BY Policy.ref_no
DBSetProp(ThisView,"View","SendUpdates",.F.)
DBSetProp(ThisView,"View","BatchUpdateCount",1)
DBSetProp(ThisView,"View","CompareMemo",.T.)
DBSetProp(ThisView,"View","FetchAsNeeded",.F.)
DBSetProp(ThisView,"View","FetchMemo",.T.)
DBSetProp(ThisView,"View","FetchSize",100)
DBSetProp(ThisView,"View","MaxRecords",-1)
DBSetProp(ThisView,"View","Prepared",.F.)
DBSetProp(ThisView,"View","ShareConnection",.F.)
DBSetProp(ThisView,"View","AllowSimultaneousFetch",.F.)
DBSetProp(ThisView,"View","UpdateType",1)
DBSetProp(ThisView,"View","UseMemoSize",255)
DBSetProp(ThisView,"View","Tables","policy")
DBSetProp(ThisView,"View","WhereType",3)
DBSetProp(ThisView+".policy_id","Field","DataType","I")
DBSetProp(ThisView+".policy_id","Field","UpdateName","policy.policy_id")
DBSetProp(ThisView+".policy_id","Field","KeyField",.T.)
DBSetProp(ThisView+".policy_id","Field","Updatable",.F.)
DBSetProp(ThisView+".ref_no","Field","DataType","C(10)")
DBSetProp(ThisView+".ref_no","Field","UpdateName","policy.ref_no")
DBSetProp(ThisView+".ref_no","Field","KeyField",.F.)
DBSetProp(ThisView+".ref_no","Field","Updatable",.T.)
DBSetProp(ThisView+".effective_date","Field","DataType","D")
DBSetProp(ThisView+".effective_date","Field","UpdateName","policy.effective_date")
DBSetProp(ThisView+".effective_date","Field","KeyField",.F.)
DBSetProp(ThisView+".effective_date","Field","Updatable",.T.)
DBSetProp(ThisView+".expire_date","Field","DataType","D")
DBSetProp(ThisView+".expire_date","Field","UpdateName","policy.expire_date")
DBSetProp(ThisView+".expire_date","Field","KeyField",.F.)
DBSetProp(ThisView+".expire_date","Field","Updatable",.T.)
當我在vfp 增加一個新的一筆資料如下,
select view_policy
appe blan
cRef_No = '0001'
dEffective_Date = date()
dExpire_Date = date()
replace ref_no with cRef_No, effective_date with dEffective_Date, expire_date with dExpire_Date
CursorSetProp("SendUpdates",.T.,"view_policy")
TABLEUPDATE(.f.,.t.,"view_policy")
CursorSetProp("SendUpdates",.f.,"view_policy")
就沒問題, 但當我更改程式如下, 就出現問題了
select view_policy
appe blan
cRef_No = '0001'
dEffective_Date = ctod( "" )
dExpire_Date = ctod( "" )
replace ref_no with cRef_No, effective_date with dEffective_Date, expire_date with dExpire_Date
CursorSetProp("SendUpdates",.T.,"view_policy")
TABLEUPDATE(.f.,.t.,"view_policy")
CursorSetProp("SendUpdates",.f.,"view_policy")
就會出現 error 1526, incorrect date value for column effective_date
請問我如何可以 update '0000-00-00' 去 mysql date column? |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1644
第 2 樓
|
發表於: 星期六 十月 17, 2015 9:32 pm 文章主題: |
|
|
試看看這樣行否?
dEffective_Date = "0000-00-00"
dExpire_Date = "0000-00-00" |
|
回頂端 |
|
|
Darren
註冊時間: 2007-10-18 文章: 57
第 3 樓
|
發表於: 星期六 十月 17, 2015 9:49 pm 文章主題: |
|
|
我試了, 不可以, 請問你有方法可以讓 mysql 接受空的日期? 是不是一定要用null ? |
|
回頂端 |
|
|
CCB2000
註冊時間: 2009-03-25 文章: 95
第 4 樓
|
發表於: 星期日 十月 18, 2015 9:17 am 文章主題: |
|
|
不要在SQL數據庫中存儲空日期{//}。
PUBLIC m.p_sql_emptydate
m.p_sql_emptydate=DATE(1900,1,1)
REPL dEffective_Date WITH IIF(dEffective_Date={//}, m.p_sql_emptydate, dEffective_Date)
需要顯示日期時:
?IIF(dEffective_Date=m.p_sql_emptydate, {//}, dEffective_Date) _________________ VFP C++編譯軟件 (VFP C++ Compiler): http://www.baiyujia.com/vfpcompiler |
|
回頂端 |
|
|
Darren
註冊時間: 2007-10-18 文章: 57
第 5 樓
|
發表於: 星期日 十月 18, 2015 2:18 pm 文章主題: |
|
|
哈哈哈......說的也是, 為甚麼沒有想到
我一直在想方法在數據庫中存儲空日期, 一直在那裡轉
你的簡單的方法就是最好的方法, 謝謝 !!!!!!!!!! |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1644
第 6 樓
|
發表於: 星期日 十月 18, 2015 9:07 pm 文章主題: |
|
|
我都是透過spt去操控mysql , 存入 '0000-00-00' 不會有問題
不去使用 remote view 和 mysql 溝通 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 7 樓
|
發表於: 星期一 十月 19, 2015 8:47 am 文章主題: |
|
|
我現在覺得,
最好的方法就是"不要用DATE型態". Orz _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
aizz
註冊時間: 2007-01-29 文章: 171
第 8 樓
|
發表於: 星期五 十月 30, 2015 9:39 am 文章主題: 樓上 +1 |
|
|
syntech 寫到: | 我現在覺得,
最好的方法就是"不要用DATE型態". Orz |
35年前用 dBase 開始, 就從來沒用過 DATE 格式, 果然都沒有被這個問題困擾過
也不會被千禧蟲蟲咬到
也沒有民國跨百年問題
好爽 ~~
|
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|