本人初入PB,正在嘗試做一個資訊系統,目前做的注冊用戶界面總是無法實作,我剛加入本論壇沒什么懸賞資本,求好心人幫忙改改,在此拜謝了!

string p1,p2,p3,p4,p5
string id
p1 = trim(sle_1.text)
p2 = trim(sle_2.text)
p3 = trim(sle_3.text)
p4 = trim(sle_4.text)
p5 = trim(ddlb_1.text)
if p1="" then
messagebox("提示","用戶ID不能為空!")
end if
if p2="" then
messagebox("提示","用戶姓名不能為空!")
end if
if p3="" then
messagebox("提示","密碼不能為空!")
end if
if p3<>p4 then
messagebox("提示","兩次密碼輸入不一致!")
sle_3.text=""
sle_4.text=""
sle_3.setfocus()
end if
select "用戶表"."用戶ID" INTO : id
from "用戶表"
using sqlca;
if id = p1 then
messagebox("提示","此用戶ID已存在")
sle_1.text=""
sle_2.text=""
sle_3.text=""
sle_4.text=""
sle_1.setfocus()
return
end if
INSERT INTO "用戶表"
( "用戶id",
"用戶名",
"密碼",
"權限" )
VALUES ( :p1,
:p2,
:p3,
:p5 ) ;
uj5u.com熱心網友回復:
新人發帖果然秒沉嗎?uj5u.com熱心網友回復:
自己頂!自己頂!自己頂!自己頂!uj5u.com熱心網友回復:
使勁頂~使勁頂~使勁頂~使勁頂~uj5u.com熱心網友回復:
每個提示后面加return陳述句if p1="" then
messagebox("提示","用戶ID不能為空!")
return
end if
uj5u.com熱心網友回復:
最后一般要事務提交commit using sqlca;
uj5u.com熱心網友回復:
目前做的注冊用戶界面總是無法實作出現什么問題了?
messagebox后面要加return的,否則還會向下執行
初學者應該多用一下單步除錯
uj5u.com熱心網友回復:
沒有描述清楚問題啊uj5u.com熱心網友回復:
最后加上if sqlca.sqlcode=0 then
commit;
messagebox("提示","注刪成功")
else
rollback;
messagebox("提示","注刪失敗"+sqlca.SQLErrText )
end if
uj5u.com熱心網友回復:
select缺少where子句long ll_count
select count(*) into :ll_count from 用戶表 where 用戶id=p1
if ll_count>0 then
...
end if
uj5u.com熱心網友回復:
我就是想看看我的等級,還沒回過貼了
uj5u.com熱心網友回復:
有幾個問題第一 區域變數命名規則。一般區域變數string用ls_開頭,實體變數以is_開頭。id 不知道會不會出錯
string p1,p2,p3,p4,p5
string id
p1 = trim(sle_1.text)
p2 = trim(sle_2.text)
p3 = trim(sle_3.text)
p4 = trim(sle_4.text)
p5 = trim(ddlb_1.text)
第二 一般判斷為慷訓本都是用lenth()判斷 p1 = ''可能有漏洞
并且你的陳述句都messagebox報錯了,怎么還不return跳出執行陳述句,否則4個messagbox都要飛出來。
看來版主是沒有運行程式。其實一運行就知道結果了
if p1="" then
messagebox("提示","用戶ID不能為空!")
end if
//第三 這個select最好用
select cout(*) into :li_count from "用戶表"
where"用戶ID" = id,判斷li_count是否大于就可以了,
如果用戶表中有很多資料,你是select哪個?呵呵
select "用戶表"."用戶ID" INTO : id
from "用戶表"
using sqlca;
if id = p1 then
messagebox("提示","此用戶ID已存在")
sle_1.text=""
sle_2.text=""
sle_3.text=""
sle_4.text=""
sle_1.setfocus()
return
end if
//第四 insert 陳述句沒commit,另外有沒有成功沒有提示。出現失敗也沒反應
INSERT INTO "用戶表"
( "用戶id",
"用戶名",
"密碼",
"權限" )
VALUES ( :p1,
:p2,
:p3,
:p5 ) ;
綜上所述,感覺版主還不是很懂什么叫using sqlca,對sql還有待加強
uj5u.com熱心網友回復:
12樓說得比較詳細了select "用戶表"."用戶ID" INTO : id
from "用戶表"
using sqlca;
if id = p1 then
messagebox("提示","此用戶ID已存在")
在這對于此段代碼做個說明,select陳述句,像你這么寫,得到的結果是所有的 用戶ID,而你之后的if判斷是單變數的判斷,你比較的始終是資料庫中第一條 用戶ID 。
1、select 缺少where陳述句;
2、using sqlca 這個的使用是你的程式使用了多了資料庫,才會出現。如果只是用單一的資料庫,默認是不用加此句的。
路還長啊,努力吧!
uj5u.com熱心網友回復:
樓上的正解。uj5u.com熱心網友回復:
留個腳印,看看大神是怎么幫新手分析問題的。uj5u.com熱心網友回復:
select "用戶表"."用戶ID" INTO : idfrom "用戶表" 加 WHERE 條件才行
uj5u.com熱心網友回復:
留個腳印,看看大神是怎么幫新手分析問題的。uj5u.com熱心網友回復:
剛學時都愛犯這樣的錯誤,沒關系的,熟悉就好了uj5u.com熱心網友回復:
留個腳印,看看大神是怎么幫新手分析問題的。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/31458.html
標籤:基礎類
下一篇:關于ole控制元件初始化問題
