自定义函数的问题(在线等待)我已经没有分了,请帮帮我!!!959595急呀(0分)

  • 主题发起人 主题发起人 我人很笨
  • 开始时间 开始时间

我人很笨

Unregistered / Unconfirmed
GUEST, unregistred user!
我自定义了一个函数 getspbh 用来得到编号。但是做了个edit1,当修改的时候调用。问题就是当我点修改按钮时候,edit1没有得到编号<br>代码如下<br>unit Unit1;<br><br>interface<br><br>uses<br> &nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> &nbsp;Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;<br><br>type<br> &nbsp;TForm1 = class(TForm)<br> &nbsp; &nbsp;ADOQuery1: TADOQuery;<br> &nbsp; &nbsp;ADOConnection1: TADOConnection;<br> &nbsp; &nbsp;DataSource1: TDataSource;<br> &nbsp; &nbsp;DBGrid1: TDBGrid;<br> &nbsp; &nbsp;Button1: TButton;<br> &nbsp; &nbsp;Button2: TButton;<br> &nbsp; &nbsp;Edit1: TEdit;<br> &nbsp; &nbsp;Edit2: TEdit;<br> &nbsp; &nbsp;procedure FormShow(Sender: TObject);<br> &nbsp; &nbsp;procedure Button1Click(Sender: TObject);<br> &nbsp; &nbsp;procedure getspbh(sender:Tobject);<br> &nbsp;private<br> &nbsp; &nbsp;{ Private declarations }<br> &nbsp;public<br> &nbsp;spbh:string;<br> &nbsp; &nbsp;{ Public declarations }<br> &nbsp;end;<br><br>var<br> &nbsp;Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br>procedure Tform1.getspbh(sender:Tobject); &nbsp; &nbsp;//得到商品编号<br>begin<br> &nbsp;adoquery1.Last;<br> &nbsp;if adoquery1.RecordCount=0 then<br> &nbsp; &nbsp;spbh:='T'+formatfloat('00000',1)<br> &nbsp;else<br> &nbsp; &nbsp;spbh:='T'+Formatfloat('00000',strtoint(copy(adoquery1.Fields[0].AsString,2,5))+1);<br>end;<br>procedure TForm1.FormShow(Sender: TObject);<br>begin<br>with adoquery1 do<br>begin<br>close;<br>sql.Clear;<br>sql.Add('select * from 种类');<br>open;<br>end;<br>end;<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>form1.getspbh(sender);<br>edit1.Text:=form1.spbh;<br>with adoquery1 do<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;close;<br> &nbsp; &nbsp; &nbsp;sql.Clear;<br> &nbsp; &nbsp; &nbsp;sql.Add('insert into 种类(种类名称)');<br> &nbsp; &nbsp; &nbsp;sql.Add('values(:种类名称)');<br> &nbsp; &nbsp; &nbsp;parameters.ParamByName('种类名称').Value := trim(edit2.Text);<br> &nbsp; &nbsp; &nbsp;try<br> &nbsp; &nbsp; &nbsp; &nbsp;execsql;<br> &nbsp; &nbsp; &nbsp; &nbsp;close;<br> &nbsp; &nbsp; &nbsp; &nbsp;sql.Clear;<br> &nbsp; &nbsp; &nbsp; &nbsp;sql.Add('select * from 种类');<br> &nbsp; &nbsp; &nbsp; &nbsp;open;<br> &nbsp; &nbsp; &nbsp; &nbsp;application.MessageBox('增加成功!', '提示!', mb_ok + mb_iconinformation);<br> &nbsp; &nbsp; &nbsp;except<br> &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp;end;<br>end;<br><br>end.
 
你写的是过程,没有传递参数,也没有返回值!
 
他的spbh是private的。。。可以这样写,<br>不过整个代码的结构看起来很不舒服。。。
 
sql.Add('select * from 种类');<br>adoquery1.Last;<br>其实很不明白,你这样写是什么原因呢?
 
to terryapp<br> 帮我改下,我的edit1怎么得到我要的编号呀
 
唉!这叫什么代码逻辑啊,烂就一个字啊。<br>你还是好好整理一下你的业务逻辑再编码吧。
 
太打击我了,我是初学者呀
 
getspbh<br>功能是获得最大编号的下一个号码,那么,你把它的功能封装独立点行不行啊?把那些<br>with adoquery1 do<br>begin<br>close;<br>sql.Clear;<br>sql.Add('select * from 种类');<br>open;<br>end;<br>放在这个过程正不是更好吗?
 
再者,获得不了编号,你不会跟踪调试吗?
 
收到<br>老大说得有道理,在这里谢谢了。<br>对了,edit1该怎么写呢,我想不清楚<br>谢谢了,麻烦写哈
 
edit1该这么写:<br>先按键盘的e字母,再按键盘的d字母,再按键盘的i字母,再按键盘的t字母,再按键盘的1字母[:D]
 
老大不要洗我的 头了呀<br>我怕我找不到钻的了,他的值该如何赋值
 
你要给Edit1赋什么值?
 
就是编号呀
 
你的赋值语句没有问题
 
那谢谢了。请问是哥哥还是姐姐?<br>能交个朋友吗?我是成都的<br>QQ79224601
 
procedure TForm1.FormShow(Sender: TObject);<br>begin<br>with adoquery1 do<br>begin<br>close;<br>sql.Clear;<br>sql.Add('select * from 种类');<br>open;<br>end;<br>end;<br>中的'select * from 种类'最好排一下序
 
其实有很多人看不懂你写的代码啥意思的。。。<br>你最好把业务逻辑说一下,让大家知道一下。。。<br>sql.Add('select * from 种类');<br>adoquery1.Last;<br>这代码你到底干啥?<br>这样取出来的种类就是你要的spbh???<br>很难理解啊。。。<br>函数和函数之间、类于类之间,都要高内聚,低耦合。。。<br>你这样的代码,太乱了,没逻辑可言。。。<br>你先找本有例程的书,看看人家怎么封装函数、类等。<br>对算是面向过程,也要把一个过程给理顺了。。。才行。。。<br>step by step
 
哦<br>,谢谢了哈,晓得了,晓得收到了。谢谢指点
 
我只是刚才随便写了一个小例子看看能自动生成编码不呀。。。
 
后退
顶部