 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 樓
|
|
回頂端 |
|
 |
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) |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|