delphi使用SQL表的一些常用问题(200)

  • 主题发起人 主题发起人 huamulan
  • 开始时间 开始时间
H

huamulan

Unregistered / Unconfirmed
GUEST, unregistred user!
用SQL2000建立的表 (名字为 OK ).字段INDT 为datetime 类型 , 字段 INNUM 为decimal 类型 (10精度2个小数位) 有几个问题想请教各位哥哥。1. 用ADOQUERY 连接表成功后,想用DateTimePicker1控件的值写到INDT字段中,用EDIT1控件的txt值写入到INNUM中去,请问,用SQL语句怎么写?请给出实际的例句。2.当ADOQUERY的游标指向一条记录之后,我用 DateTimePicker1.date:=Adoquery1['INDT'],成功读出了当前的数值。但是我想将DateTimePicker1.date的值改写到当前游标指向的字段中,怎么实现呢?同理INNUM怎么改写??3.怎样动态创建一个Adoquery, 然后利用它在表的未尾插入一条新记录,接着自动将游标指向这条新记录。即:直接通过Adoquery['INNDT']就可以访问到新记录的。4.有一个字段PP 为bit 型 的,请问怎么用(SELECT PP AS 开票) 通过访问它的值显示为是或者否呢?
 
问题 1、首先这个问题要分成是插入还是更新,如果是更新的话,这个表中要有一个唯一标识字段,比如ID,按照你这个说法是要插入,那就有两种插入的方法了,第一个就是不先连接表,直接插入,推荐这个办法 例: try ADOQuery.Close; ADOQuery.SQL.Clear; ADOQuery.SQL.Add('insert into OK(INDT,INNUM)values(INDT,:INNUM)'); ADOQuery.Parameters.ParamByName('INDT').Value := DateTimePicker1.DateTime; ADOQuery.Parameters.ParamByName('INNUM').Value := Edit1.Text; ADOQuery.ExecSQL; except ShowMessage('插入记录失败'); end; 第二个就是连接表,然后插入记录,因为这个办法多了一步连接表的过程,耗费资源,不推荐 例: 连接表的代码略: ………… ADOQuery.Append; ADOQuery.FieldByName('INDT').AsDateTime := DateTimePicker1.DateTime; ADOQuery.FieldByName('INNUM').AsString := Edit1.Text; ADOQuery.Post;问题2;建议增加一个字段做唯一标识,比如自动增长的ID,在读出值的时候也读出当前ID值,更新写入的时候更新这个ID的值就行了,当然如果你读取当前记录的之后,就不在变化Adoquery的游标了,那么就可以直接写进去值 ADOQuery.Edit; ADOQuery.FieldByName('INDT').AsDateTime := DateTimePicker1.DateTime; ADOQuery.FieldByName('INNUM').AsString := Edit1.Text; ADOQuery.Post;问题3。这个问题没看出来有什么意义, ADOQuery := TADOQuery.Create(Self); ADOQuery.Connection := ADOConnection1;//指定数据库连接组件 ADOQuery.SQL.Clear; ADOQuery.SQL.Add('select * from OK'); ADOQuery.Open; ADOQuery.Append; ADOQuery.FieldByName('INDT').AsDateTime := DateTimePicker1.DateTime; ADOQuery.FieldByName('INNUM').AsString := Edit1.Text; ADOQuery.Post; ADOQuery.Last; //刚才插入的那条记录就是最后一条, //由于已经定位到最后一条了,这个时候就可以读取刚才插入的值了 ADOQuery.Free; 问题4;使用TDBCheckBox控件,可以直接显示是或者否
 
高手啊,真的谢谢你。
 
后退
顶部