我用vb6做了一个小程序数据库用access,用adodc+datagrid控件,我想做一个查询

我用vb6做了一个小程序数据库用access,用adodc+datagrid控件,我想做一个查询,检索数据库中是否已存在日期字段中的该日期,如果存在就msgbox如果没有... 我用vb6做了一个小程序数据库用access,用adodc+datagrid控件,我想做一个查询,检索数据库中是否已存在日期字段中的该日期,如果存在就msgbox如果没有就保存该记录
c是表名 date是字段名
代码如下Dim mystr

mystr = Text1(0).Text

If Adodc1.RecordSource = "select count(*) from c where mystr <> 0 " Then

Adodc1.Recordset.Update

Adodc1.Refresh

from.Adodc1.Recordset.Update '更新数据表

from.Adodc1.Refresh

Else

MsgBox "请注意该日期已在数据库中存在,请检查日期是否输入错误"

End If
复制代码现在的问题是 不论日期重复不重复都会出msgbox,不重复也可以保存。另外是我是在from1.frm做的输入,text连接了数据库,转到from2.frm检查数据后 保存运行上面代码的,还有如果数据重复datagrid控件会出错,如何把错误提示去掉,或者自己加错误提示,拜托诸位达人了
展开
 我来答
台三诗JZ
2012-01-09 · 超过34用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:96.1万
展开全部
只看前两句代码就发现问题在那里了
If Adodc1.RecordSource = "select count(*) from c where mystr <> 0 "
这句代码的意思是判断 Adodc1.RecordSource属性值是否等于后面那个字符串(即select count(*) from c where mystr <> 0)
你的程序在formload()中或其它任何执行本段代码之前肯定没有为Adodc1设置RecordSource这个属性吧。
因此这个IF在任何时候判断均为false,因此任何情况下都会弹出msgbox。
因为程序的逻辑和你预想的逻辑根本就不是一回事。
更多追问追答
追问
那我该怎么写呢 ,首先在load里设置属性的话怎么设置 为什么要设置这个属性
然后我判断查找到的记录是否>0条应该怎么写呢
刚我看了代码 我在load里设置Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
Adodc1.RecordSource = "select * from c"
我设置了啊
追答
给你提供一个思路,具体代码自己想啊 ^_^
1、声明一个记录集对象,本记录集对象的数据源是 "select * from c where 某字段 = " & mystr
2、判断该记录集中记录条数是否大于0,如果大于则将该记录集赋给datagrid,并让其显示;如果为否则转下一步
3、通过Adodc1的连接对象向数据库中接入一条记录集,并弹出msgbox
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式