程序员很多时候都在进行数据操作,就是增删改查,下面看看pb如何用最少的代码实现增删改查。
数据库使用sqlserver,建立一个表table_test,四个字段,dbid int 自增键值,xm1 varchar(20),xm2 varchar(20),xm3 varchar(20),ok。
首先,建立一个Applicaton
在open事件中,打开测试窗口w_test;
其次,建立w_test窗体
如上图,摆放如下控件:一个静态文本,一个编辑框,四个button,两个datawindow即可,制作一个grid的dw,一个freedom的dw,用于查询和维护。
连接数据库,两个datawindow显示数据,窗口的open事件:
sqlca.dbms="MSS MS SQL Server 6.X"
sqlca.database="db"
sqlca.ServerName='servername'
sqlca.UserId='sa'
sqlca.DBPass='password'
sqlca.LogID='sa'
sqlca.Logpass='passeord'
connect using sqlca;
IF sqlca.sqlcode<>0 THEN
messagebox("info",sqlca.sqlerrtext)
END IF
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_2.settransobject(sqlca)
long ll_dbid
if dw_1.rowcount()>0 then
ll_dbid = dw_1.getitemnumber(1,"dbid")
dw_2.retrieve(ll_dbid)
Else
dw_2.insertrow(0)
END IF
增加的代码,按钮的click:
dw_2.reset()
dw_2.insertrow(0)
删除的代码,按钮的click:
IF dw_1.getrow()>0 then
dw_1.deleterow(dw_1.getrow())
if dw_1.update()=1 then
messagebox("info","保存成功!")
commit;
else
messagebox("info","保存失败!")
rollback;
end if
END IF
保存的代码,按钮的click:
if dw_2.update()=1 then
messagebox("信息","保存成功!")
commit;
else
messagebox("信息","保存失败!")
rollback;
end if
dw_1.retrieve()
退出的代码,按钮的click:
close(parent)
查询的代码,sle_1的modify事件:
if sle_1.text="" then
dw_1.setfilter("")
else
dw_1.setfilter("(xm1 like '%"+sle_1.text+"%') or (xm2 like '%"+sle_1.text+"%') or (xm3 like '%"+sle_1.text+"%')")
END IF
dw_1.filter()
选择查看的代码,dw_1的click事件:
long ll_dbid
IF row>0 then
this.selectrow(0,false)
this.selectrow(row,true)
ll_dbid = this.getitemnumber(row,"dbid")
dw_2.retrieve(ll_dbid)
END IF
总结
pb程序员只要会这么几十行代码,基本数据库的操作就ok了,高效快捷。