注册 登录
编程论坛 VB6论坛

ADODC控件查询问题 周一要完工,跪求各位大侠帮忙~!~

hahadeai 发布于 2012-11-29 20:09, 481 次点击
VB中通过文本框输入的内容来对比数据表表中有没有相同字段,有就更新相同字段数量,没有就新添加一条记录。
例如:有块表内容如下:
表名:培养基
编号      培养基类型      添加剂       数量     操作员
1             M1          青霉素        20         杨红  
2             M2          庆大霉素      20         杨红   
text1.text 代表"培养基类型"
text2.text 代表"添加剂"
text3.text 代表"数量"
在文本框中输入m1  青霉素  20。表中就不单独添加一行,而是原有的数量20变为40。
在文本框中输入m3  青霉素  20。就单独添加一行。请各位大侠能赐教,给出代码。  关键就是查询对比这块不会弄。

大概思路
Adodc2.Recordset.MoveFirst
Adodc2.Recordset.Find("培养基类型") = Text1.Text And Adodc2.Recordset.Find("添加剂") = Text2.Text
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
MsgBox "此项不允许为空!"

Else

If Not Adodc2.Recordset.EOF And Not Adodc2.Recordset.EOF Then
Adodc2.Recordset.Fields("数量") = Adodc2.Recordset.Fields("数量") + Text3.Text
Adodc2.Recordset.Fields("操作员") = Text4.Text

Else

写入一条新的

End if
.update
.close
msgbox "添加成功!!"
就更新数量的那段老整不对。

[ 本帖最后由 hahadeai 于 2012-11-29 20:27 编辑 ]
6 回复
#2
mayuebo2012-11-30 08:38
Adodc2.Recordset.Fields("数量") = Adodc2.Recordset.Fields("数量") + Text3.Text
更新完成后只有update才能保存到数据库中
#3
hahadeai2012-11-30 08:57
回复 2楼 mayuebo
我想知道我红色部分有没有写对?? 如果对了为什么调试不通? 问题在哪里?
如果不对,要怎么写?
#4
风吹过b2012-11-30 11:46
Find 方法,不会用了,一般都是用 SQL 来查询,更新数据库。
所以无能为力。


SQL 方法:先使用 SELECT 查询一下,如果有相同的,记下ID (编号),原数量,
然后,如果有ID,那么合并数量,按ID为关键字进行 数据更新。
无ID,使用添加 数据 更新。
#5
Artless2012-11-30 11:56
以下是引用hahadeai在2012-11-30 08:57:20的发言:

我想知道我红色部分有没有写对?? 如果对了为什么调试不通? 问题在哪里?
如果不对,要怎么写?

调试不通?如果不对?
#6
hahadeai2012-11-30 19:20
回复 4楼 风吹过b
能举个例子吗?

Function AddData()
    Adodc1.RecordSource = "select * from 培养基 order by 培养基类型,添加剂"
    Adodc1.Refresh
    If Adodc1.Recordset.RecordCount > 0 Then
        Adodc1.Recordset.MoveFirst
        For i = 1 To Adodc1.Recordset.RecordCount
            Adodc1.Recordset.Fields("培养基类型") = Text1.Text
            Adodc1.Recordset.Fields("添加剂") = Text2.Text
            Adodc1.Recordset.Fields("数量") = Adodc1.Recordset.Fields("数量") + Text3.Text
            Adodc1.Recordset.MoveNext
        Next i
    End If
end function
这样子对不对?

[ 本帖最后由 hahadeai 于 2012-11-30 19:22 编辑 ]
#7
风吹过b2012-11-30 21:25
"select * from 培养基 where 培养基类型='" & trim(text1.text) & "' and 添加剂 = '" &  trim(text2.text) & "';"
如果返回的纪录条数为 1 那么说明 存在记录,记下数量和ID 来。
如果返回的纪录条数大于1 那么说明数据有问题。要么不理,只使用第一条记录,与上一条相同处理。
如果返回的纪录条数为0 ,那么说明不存在记录。

保存数据使用
UPDATE 表名 SET 列名=列改变值[WHERE  条件表达式]

新记录使用
INSERT INTO 表名(字段列表) VALUES(值列表)
值列表中,如果是字符串的都要用 单引号引起来,就跟我第一行写的那条 SQL 样的。

ID 如果不是 自动编号的情况下,
使用下面这个 SQL 命令查询最大值。
Select max(编号) as max编号 from 培养基
Recordset.Fields("max编号") 得到的就是 编号的最大值。MAX 是 SQL 的内置函数。
as 是给函数值起个名字而以。
1