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

如何在 vfp9 通過 view update '0000-00-00' 去 mysql date column

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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. 想學習系統規劃,想找系統架構的顧問

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



註冊時間: 2007-01-29
文章: 171


第 8 樓

發表發表於: 星期五 十月 30, 2015 9:39 am    文章主題: 樓上 +1 引言回覆

syntech 寫到:
我現在覺得,
最好的方法就是"不要用DATE型態". Orz



35年前用 dBase 開始, 就從來沒用過 DATE 格式, 果然都沒有被這個問題困擾過

也不會被千禧蟲蟲咬到
也沒有民國跨百年問題

好爽 ~~



Laughing Twisted Evil Wink Mad
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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