string password,usename
if sle_1.text="" or sle_2.text="" then
messagebox("錯誤","用戶名或密碼不能為空!",exclamation!,ok!)
else
select 用戶名,密碼
into :usename, :password
from nbc1
where nbc1.用戶名=:sle_1.text;
if usename=sle_1.text and password=sle_2.text then
open(w_main)
close(w_login)
else
messagebox("錯誤","用戶名或密碼錯誤,請重新輸入",exclamation!,ok!)
end if
end if
以上為視窗登錄代碼:在pb自帶資料庫ASA下測驗通過,但是在sql 2000資料庫卻不能通過,請高手幫忙,謝謝!
uj5u.com熱心網友回復:
跟蹤一下就知道了!uj5u.com熱心網友回復:
是不是在陳述句表達上格式不同啊,就像access 和vfp 雖然都是sql查詢陳述句但有的時候表示的陳述句卻不同。uj5u.com熱心網友回復:
語法應該不會錯,但就是不能實作效果uj5u.com熱心網友回復:
我又試了一下 ,如果用戶名和密碼不同則可以通過。uj5u.com熱心網友回復:
我都說了,跟蹤除錯一下就知道了!你這么寫得有點問題
string s_pw,s_un
int i
s_pw = trim(sle_1.text)
s_un = trim(sle_2.text)
//文本值要取到變數中來使用!
select count(*) into :i
from nbc1
where 用戶名 = :s_un and 密碼 = :s_pw;
//列名竟然用中文,不怕麻煩嗎!
if i = 1 then
//成功
else
//不成功
end if
uj5u.com熱心網友回復:
如果是我,大致會寫成下面這樣:string as_emp_id , as_emp_pass
int i
as_emp_id = sle_1.text
as_emp_pass = sle_2.text
if len(as_emp_id) = 0 or len(as_emp_pass) = 0 then
messagebox("錯誤","用戶名或密碼不能為空!",exclamation!,ok!)
return
end if
select 1 into :i
from nbc1
where 用戶名 = :as_emp_id and
密碼 = :as_emp_pass ;
if sqlca.sqlcode <> 0 then
messagebox("錯誤","用戶名或密碼錯誤,請重新輸入",exclamation!,ok!)
return
end if
open(w_main)
close(w_login)
當然這只是針對你的問題的寫法,我的實際應用中是放在登錄物件中呼叫的
uj5u.com熱心網友回復:
同意樓上uj5u.com熱心網友回復:
我也有個題外的問題,大家的昵稱都是怎么設定的???我的怎么沒有呢??在哪里能設定呢???謝謝。。uj5u.com熱心網友回復:
加斷點debuguj5u.com熱心網友回復:
[Quote=參考樓主 jtszqzxzzh 的帖子:]string password,usename
if sle_1.text="" or sle_2.text="" then
messagebox("錯誤","用戶名或密碼不能為空!",exclamation!,ok!)
else
select 用戶名,密碼
into :usename, :password
from nbc1
where nbc1.用戶名=:sle_1.text;
if usename=sle_1.text and password=sle_2.text then
open(w_main)
close(w_login)
else
messagebox("錯誤","用戶名或密碼錯誤,請重新輸入",exclamation!,ok!)
end if
============================================================
"messagebox("錯誤","用戶名或密碼不能為空!",exclamation!,ok!)"
后面+1句:return
"if usename=sle_1.text and password=sle_2.text then"
前面+
if sqlca.sqlcode<>0 then
messagebox("","could not find data in database!")
return
end if
其他的要注意用trim 去掉倆邊空格,就沒什么問題了
回8樓,尼稱在 我的社區->個人資料-〉社區尼稱 ok~
uj5u.com熱心網友回復:
謝謝你啊!!呵呵,我太笨了,沒意思到。。。
uj5u.com熱心網友回復:
呵呵,近視了uj5u.com熱心網友回復:
習慣不好,報錯的messagebox一定要Return,不然程式還是往下走,你寫messagebox也就沒意義了uj5u.com熱心網友回復:
select 用戶名,密碼into :usename, :password
from nbc1
where nbc1.用戶名=:sle_1.text;
你都知道 用戶名=sle_1.text;
為什么還"select 用戶名,密碼"呢?
資料庫優化肯定不及格!
uj5u.com熱心網友回復:
基本功不強啊 !!!uj5u.com熱心網友回復:
if isnull(usename,"")=sle_1.text and isnull(password,"")=sle_2.text thenuj5u.com熱心網友回復:
我運行了一下,為什么這樣還是不行啊,請教一下,謝謝了!string password,usename
usename = trim(sle_uer.text)
password = trim(sle_psw.text)
if sle_uer.text="" or sle_psw.text="" then
messagebox("錯誤","用戶名或密碼不能為空!",exclamation!,ok!)
else
select mname,mpsd
into :usename, :password
from manager
where manager.mname=:sle_uer.text and manager.spsw=sle_psw;
if sqlca.sqlcode <>0 then
messagebox("","could not find data in database!")
return
end if
if usename=sle_uer.text and password=sle_psw.text then
open(w_chpassword)
close(w_login)
else
messagebox("錯誤","用戶名或密碼錯誤,請重新輸入",exclamation!,ok!)
return
end if
error syntax error
uj5u.com熱心網友回復:
nbc1.用戶名 不合法uj5u.com熱心網友回復:
少了1個 end ifuj5u.com熱心網友回復:
加強技術uj5u.com熱心網友回復:
好象已經解決了哦uj5u.com熱心網友回復:
ASA或SQL 基本的sql陳述句是一致的像ASA中的char
與SQL中的char
就不同ASA不會自動加空格
uj5u.com熱心網友回復:
我補充一句:select 用戶名,密碼
into :usename, :password
from nbc1
where nbc1.用戶名=:sle_1.text;
后面要馬上加一句錯誤判斷啊:
if sqlca.sqlcode<0 then
messagebox("提示","資料庫發生以下錯誤:~n"+sqlca.sqlerrtext)
return
end if
這是一個良好的編程習慣.這是查詢還好,如果是更新呢?你怎么知道一定會成功?所以啊,要習慣每一句都要加上這一段代碼,可以寫成一個小函式.如命名為sqlerr(),出錯就回傳為真.
if sqlerr() then return
其實很方便的.
uj5u.com熱心網友回復:
跟蹤是很好的習慣轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/102208.html
標籤:腳本語言
上一篇:存盤程序實作不同資料源切換顯示
