VB6.0与access数据库,在控件(如textbox)属性中绑定数据字段,这种方式是否不能添加数据记录?

在窗体上添加了adodc控件,在控件属性中连接了数据库和数据表;另外在窗体上添加了若干个textbox控件,在控件属性中设置了datasource和datafield,分别对应adodc和相应字段名称。
运行时,在第一个textbox中输入内容后,点击第二个textbox后,第一个textbox中刚输入的内容就消失了。
一本VB的书上说用这种绑定字段的方式可以实现对数据库的增、删、查、改,可是网上一则材料却说不能实现增加记录的功能,请问高手到底能还是不能?如果能实现的话,应该如果做?

当adodc所连接的数据表中不存在记录,或者当前记录指针指向BOF或EOF时,就会出现你所说的在文本框输入内容后移开焦点时所输入的内容被自动清空的情况,因为这个时候不存在任何可操作的当前记录,你的操作是无意义的。必须通过其他方法先给数据表添加一个空白记录,这时候adodc的记录指针就会自动指向这个记录,然后再在绑定的文本框中输入数据才有效!比如添加一个名为“新增记录”的按钮:

Private Sub Command1_Click()
Adodc1.Recordset.AddNew  '添加新的空记录
End Sub

此外要注意,输入数据后,并不会立即写入数据库的,这时候有两种方式来处理:一是再次点击“新增记录”按钮,那么在新增一条空记录的同时刚才输入的内容就会被自动写入数据库;二是通过其他方式强制写入数据库,比如新增一个“确认添加”的按钮:

Private Sub Command2_Click()
Adodc1.Recordset.Update  '更新数据表
End Sub

当然,你也可以发挥你的聪明才智,让程序实现智能操作,比如光标停留在第一个文本框时就自动添加一个空记录,光标离开最后一个文本框时就自动写入数据库,这样就无须专门添加N个按钮来处理了。不过这样一来程序的复杂程度就肯定会上升,比如你需要处理因为无意中点击了第一个文本框而添加的多余空记录。

其他改、删、查的时候也同样要注意:执行操作时,要先把adodc的记录指针指向需要操作的那条记录,否则操作无效,甚至还可能破坏其他正常记录。

温馨提示:内容为网友见解,仅供参考
无其他回答

请教VB6.0 中DataGrid 操作Access数据库的问题
DATAGRID是数据感知控件,换句话说,只要用ADO连接数据库,只要少量代码或者0代码实现以上要求,具体是否允许添加删除,右击控件选择属性,设置.具体的操作是 1:添加ADODC控件 2:添加DATEGRID控件 3:设置ADODC1的连接字符串,指定ACCESS数据库(详细操作不用我说了吧)4:设置ADODC1的RECORDSOURCE,一般指表名 5:设...

vb6.0如何用代码实现往access中添加字段的数据?请高手解答,代码要详 ...
Private Sub cmdOK_Click()'定义一个结果集 Dim rs As New ADODB.Recordset '如果结果集的状态为打开,那么就关闭 If (rs.State = adStateOpen) Then rs.Close End If '打开结果集 'aa是你要插入数据的表,cn是你建立与ACCESS数据库建立的连接 rs.Open "select * from tbl_aa ", cn, adOpen...

50分求解,在VB6.0中查询Access数据库多字段并加条件查询,?
RecordSource=“要打开的数据表或者查询”然后TextBox要设置两个属性 DataSource=上面设置的那个数据控件,比如ADODC1,你把ADODC控件添加到Form中的时候,在这个属性里面就能选择 DataField=你要在Textbox中显示的字段,如果你在Adodc1中设置好正确的连接,这个属性能让你选择需要显示的字段 ...

VB6.0 使用Adodc控件读取Access数据库. 怎么修改数据库指定某一列的所 ...
Private Sub Command1_Click() Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS路径名" '\/\/连接字符串,ACCESS2007以上版本不一样 Adodc1.RecordSource="Select * from 表名称" '\/\/查询表数据 Adodc1.Refreash '\/\/必须要刷新控件激活 '\/\/如果要...

怎样才能在VB6.0 中连接Access 2003数据库
一:建立一个Access型数据库,并在数据库中创建新表—即为附加表。通过设置 附加表的各属性值,使其与你所要访问的数据库建立链接关系。程序代码如下:DimDbasDatabase DimTdasNewTabledef SetDb=OpenDatabase("MYDB.MDB")Td.Connect="dBASE:DATABASE=c:\\DATADIR"Td.SourceTableName="AU THOR"Td....

我想用VB6.0做前台,访问ACCESS.用COMBO(下拉文本框
比较常用的是遍历数据集的方法。首先将游标指向第一行数据,接着把第一行中那个字段的值添加到Combo里面,再将游标移至下一行。重复上面的操作直到遍历整个数据集。如果高手们有更好的方法,请不吝赐教哦。

VB6.0中,如何关联组合框和数据库
VB6.0控件对数据库的访问用的是DAO而且只支持到Access97 代码操作是可行的 只要在Combo1_Click事件中添加代码就可以了 ADO对象下代码应该是这样的:<前面打开记录集> combo2.clear rs.movefirst rs.filter="商家 = '"& combo1.text & "'"do while not rs.eof combo2.additem rs.fiends(1)...

如何使VB6.0 连接Access数据库
然后在FORM1窗体中添加ADODC控件和DATAGRID控件,将DATAGRID1的属性DATASOURCE选ADODC1,打开ADODC1控件属性页使用连接字符串,选生成,在提供者选项中选MICROSOFT jet 4.0 OLE DB Provider,然后按要求连接数据库等。在ADODC1控件属性页使用连接字符串空白文本窗口中就有一长串字符串,注意该字符串可复制到...

VB6.0,连接Access数据库,用ADODC控件,如何将数据库里面某条指定的记录...
假设表名叫做table1,table1有个人字段是name(人名)。确保你ADODC已经连上数据库,并并且Recordset="table1",就是关联那个表 那么,with adodc1 .recordset.find "name='" & text1.text & "'"If Not .EOF And Not .BOF Then .Delete .Update End If end with ...

VB6.0连接ACCESS数据库
Private Sub Form_Load()cn.Open "provider=microsoft.jet.oledb.4.0;data source=" + App.Path + "\\数据库名.mdb" + ""sql = "select * from 表名"rs1.Open sql, cn rs1.MoveFirst Do While Not rs1.EOF Combo1.AddItem rs1("字段名")rs1.MoveNext Loop rs1.Close End Sub 上...

相似回答