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

設計時期沒有問題,轉成exe卻找不到cursor?

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



註冊時間: 2006-03-29
文章: 20


第 1 樓

發表發表於: 星期日 六月 11, 2006 9:02 pm    文章主題: 設計時期沒有問題,轉成exe卻找不到cursor? 引言回覆

設計時期沒有問題,轉成exe卻找不到cursor?
寫了一個函數,去SERVER端查詢資料,如果不在,用insert,在用update
在設計時期沒有問題,但編譯程exe之後,卻找不到那個cursor
'找不到別名quetemp'
真的是敗了...
現將prg貼上,綴位高手幫我看哪裡有問題吧@@
我已經找了6個小時,
眼鏡都摔破了@@....

版本是vfp6



**
**整個TABLE INSERT或UPDATE到SQL去,指定比對欄位順序,指定更新欄位順序
**欄位寫法為001002003004005
**
Function insupdsql
Parameter iusql_tablename,iusql_wheresqlstr,iusql_updsqlstr
iusql_alc_num_w=1
iusql_alc_num_u=1
iusql_alc_w=Val(Substr(iusql_wheresqlstr,iusql_alc_num_w,3))
iusql_alc_u=Val(Substr(iusql_updsqlstr,iusql_alc_num_u,3))
iusql_chkstr=0
If Int(Len(iusql_wheresqlstr)/3)=Len(iusql_wheresqlstr)/3
iusql_alc_num_w=1
iusql_chkstr=1
Else
iusql_chkstr=-1
Endif
If Int(Len(iusql_updsqlstr)/3)=Len(iusql_updsqlstr)/3
iusql_alc_num_u=1
iusql_chkstr=1
Else
iusql_chkstr=-2
Endif
If iusql_chkstr=1
iusql_fieldnum=FCount( )
Dimension iusql_arr_ver(iusql_fieldnum,2)
Afields(iusql_arr_field)
iusql_Strok=1
Scan
iusql_updcon="update "+iusql_tablename+" set "
iusql_updcon0=""
iusql_updcon1=""
iusql_updcon2=""
iusql_updcon3=""
iusql_updcon4=""
iusql_updcon5=""
iusql_updcon6=""
iusql_updcon7=""
iusql_updcon8=""
iusql_updcon9=""
iusql_updcon10=""
iusql_updcon11=""
iusql_updcon12=""
iusql_updcon13=""
iusql_updcon14=""
iusql_updcon15=""
iusql_updcon16=""
iusql_updcon17=""
iusql_updcon18=""
iusql_updcon19=""
iusql_inscon="Insert into "+iusql_tablename+" Values( "
iusql_inscon0=""
iusql_inscon1=""
iusql_inscon2=""
iusql_inscon3=""
iusql_inscon4=""
iusql_inscon5=""
iusql_inscon6=""
iusql_inscon7=""
iusql_inscon8=""
iusql_inscon9=""
iusql_inscon10=""
iusql_inscon11=""
iusql_inscon12=""
iusql_inscon13=""
iusql_inscon14=""
iusql_inscon15=""
iusql_inscon16=""
iusql_inscon17=""
iusql_inscon18=""
iusql_inscon19=""
iusql_quecon="Select count(*) as num from "+ iusql_tablename + " where "
iusql_quecon0=""
iusql_quecon1=""
iusql_quecon2=""
iusql_quecon3=""
iusql_quecon4=""
iusql_quecon5=""
iusql_quecon6=""
iusql_quecon7=""
iusql_quecon8=""
iusql_quecon9=""
iusql_quecon10=""
iusql_quecon11=""
iusql_quecon12=""
iusql_quecon13=""
iusql_quecon14=""
iusql_quecon15=""
iusql_quecon16=""
iusql_quecon17=""
iusql_quecon18=""
iusql_quecon19=""
iusql_queConnum=0
iusql_insConnum=0
iusql_updConnum=0
For iusql_i=1 to iusql_fieldnum
If iusql_i<>1
iusql_inscon=iusql_inscon+","
Endif
iusql_fname="?alc_"+AllTrim(iusql_arr_field(iusql_i,1))
iusql_fname1=AllTrim(iusql_arr_field(iusql_i,1))
iusql_fname2="alc_"+AllTrim(iusql_arr_field(iusql_i,1))
iusql_abc="&iusql_fname1"
iusql_fvalue=&iusql_abc
iusql_arr_ver(iusql_i,1)=iusql_fname
iusql_arr_ver(iusql_i,2)=iusql_fvalue
If Len(iusql_inscon) >=220
iusql_insconname="iusql_inscon" + AllTrim(Str(iusql_insConnum))
&iusql_insconname=iusql_inscon
iusql_insConnum=iusql_insConnum+1
iusql_inscon=""
Endif
iusql_inscon=iusql_inscon+iusql_fname
If iusql_i=iusql_alc_w
If Len(iusql_quecon) >=220
iusql_queconname="iusql_quecon" + AllTrim(Str(iusql_queConnum))
&iusql_queconname=iusql_quecon
iusql_queConnum=iusql_queConnum+1
iusql_quecon=""
Endif
iusql_quecon=iusql_quecon+iusql_fname1+" = "+iusql_fname+ " And "
iusql_alc_num_w=iusql_alc_num_w+3
iusql_alc_w=Val(Substr(iusql_wheresqlstr,iusql_alc_num_w,3))
Endif
If iusql_i=iusql_alc_u
If Len(iusql_updcon) >=220
iusql_updconname="iusql_updcon" + AllTrim(Str(iusql_updConnum))
&iusql_updconname=iusql_updcon
iusql_updConnum=iusql_updConnum+1
iusql_updcon=""
Endif
iusql_updcon=iusql_updcon+iusql_fname1+"="+iusql_fname1+"+"+iusql_fname+","
iusql_alc_num_u=iusql_alc_num_u+3
iusql_alc_u=Val(Substr(iusql_updsqlstr,iusql_alc_num_u,3))
Endif
Do Case
Case AllTrim(iusql_arr_field(iusql_i,2))="C"
iusql_abc="&iusql_fname2=IIf(IsNull(AllTrim(&iusql_fname1)),'',AllTrim(&iusql_fname1))"
Case AllTrim(iusql_arr_field(iusql_i,2))="N"
iusql_abc="&iusql_fname2=IIf(IsNull(&iusql_fname1),0,&iusql_fname1)"
Case AllTrim(iusql_arr_field(iusql_i,2))="I"
iusql_abc="&iusql_fname2=IIf(IsNull(&iusql_fname1),0,&iusql_fname1)"
Case AllTrim(iusql_arr_field(iusql_i,2))="D"
iusql_abc="&iusql_fname2=IIf(IsNull(&iusql_fname1),{^1970-01-01},&iusql_fname1)"
Case AllTrim(iusql_arr_field(iusql_i,2))="T"
iusql_abc="&iusql_fname2=IIf(IsNull(&iusql_fname1),CTOT('1970-01-01 00:00:00'),&iusql_fname1)"
Otherwise
iusql_abc="&iusql_fname2=''"
Endcase
&iusql_abc
Endfor
iusql_inscon=iusql_inscon+")"
iusql_queconname="iusql_quecon" + AllTrim(Str(iusql_queConnum))
iusql_updconname="iusql_updcon" + AllTrim(Str(iusql_updConnum))
iusql_insconname="iusql_inscon" + AllTrim(Str(iusql_insConnum))
&iusql_queconname=Substr(iusql_quecon,1,Len(iusql_quecon)-5)
&iusql_updconname=Substr(iusql_updcon,1,len(iusql_updcon)-1)
&iusql_insconname=iusql_inscon
iusql_insstr1="iusql_inscon0+iusql_inscon1+iusql_inscon2+iusql_inscon3+iusql_inscon4"
iusql_insstr2="iusql_inscon5+iusql_inscon6+iusql_inscon7+iusql_inscon8+iusql_inscon9"
iusql_insstr3="iusql_inscon10+iusql_inscon11+iusql_inscon12+iusql_inscon13+iusql_inscon14"
iusql_insstr4="iusql_inscon15+iusql_inscon16+iusql_inscon17+iusql_inscon18+iusql_inscon19"
iusql_insstr=&iusql_insstr1+&iusql_insstr2+&iusql_insstr3+&iusql_insstr4
iusql_updstr1="iusql_updcon0+iusql_updcon1+iusql_updcon2+iusql_updcon3+iusql_updcon4"
iusql_updstr2="iusql_updcon5+iusql_updcon6+iusql_updcon7+iusql_updcon8+iusql_updcon9"
iusql_updstr3="iusql_updcon10+iusql_updcon11+iusql_updcon12+iusql_updcon13+iusql_updcon14"
iusql_updstr4="iusql_updcon15+iusql_updcon16+iusql_updcon17+iusql_updcon18+iusql_updcon19"
iusql_updstr=&iusql_updstr1+&iusql_updstr2+&iusql_updstr3+&iusql_updstr4
iusql_questr1="iusql_quecon0+iusql_quecon1+iusql_quecon2+iusql_quecon3+iusql_quecon4"
iusql_questr2="iusql_quecon5+iusql_quecon6+iusql_quecon7+iusql_quecon8+iusql_quecon9"
iusql_questr3="iusql_quecon10+iusql_quecon11+iusql_quecon12+iusql_quecon13+iusql_quecon14"
iusql_questr4="iusql_quecon15+iusql_quecon16+iusql_quecon17+iusql_quecon18+iusql_quecon19"
iusql_questr=&iusql_questr1+&iusql_questr2+&iusql_questr3+&iusql_questr4
iusql_sqlqueStr="iusql_aaSQLok=SQLExec(conn1,iusql_questr,'QUETEMP')"
iusql_sqlupdStr="iusql_aaSQLok=SQLExec(conn1,iusql_updstr)"
iusql_sqlinsStr= "iusql_aaSQLok=SQLExec(conn1,iusql_insstr)"
&iusql_sqlqueStr
SQLMoreResult(conn1)
Select QUETEMP
copy to "&dr"+"\abctest.txt" type deli with char ','
SQLSetprop(conn1, 'Transactions', 2)
If quetemp.num=0
&iusql_SQLinsStr
If iusql_aaSqlok<0
iusql_chkstr=-3
Endif
Else
&iusql_SQLupdStr
If iusql_aaSqlok<0
iusql_chkstr=-4
Endif
Endif
Endscan
Endif
Return iusql_chkstr
Endfunc
回頂端
檢視會員個人資料 發送私人訊息
goto-dream



註冊時間: 2004-05-11
文章: 909


第 2 樓

發表發表於: 星期二 六月 13, 2006 11:27 pm    文章主題: 引言回覆

iusql_sqlinsStr把這段語法放在Server 那端執行看看
_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
qasnet



註冊時間: 2006-03-29
文章: 20


第 3 樓

發表發表於: 星期三 六月 14, 2006 1:51 am    文章主題: 引言回覆

goto-dream 寫到:
iusql_sqlinsStr把這段語法放在Server 那端執行看看

可以跑...沒有問題...
我在server的 Query-language tool上跑過
iusql_sqlinsStr ok
iusql_sqlqueStr ok

而且在vfp按f8一步一步慢慢跑....還可以抓到queTemp這個corsur
upd可以不用跑...那個有錯我還沒改
執行檔直接跑iusql_sqlinsStr也是ok的
但跑iusql_sqlqueStr就不行了

有沒有跑exe時也像debug工具一樣的東西阿....
回頂端
檢視會員個人資料 發送私人訊息
billjiang



註冊時間: 2006-06-09
文章: 5


第 4 樓

發表發表於: 星期一 六月 19, 2006 9:36 pm    文章主題: 引言回覆

仔细检查两者运行的数据环境(dataenvironment)
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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