| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 481 人关注过本帖
标题:ADODC控件查询问题 周一要完工,跪求各位大侠帮忙~!~
只看楼主 加入收藏
hahadeai
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
ADODC控件查询问题 周一要完工,跪求各位大侠帮忙~!~
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 编辑 ]
搜索更多相关主题的帖子: 庆大霉素 添加剂 青霉素 培养基 操作员 
2012-11-29 20:09
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
收藏
得分:2 
Adodc2.Recordset.Fields("数量") = Adodc2.Recordset.Fields("数量") + Text3.Text
更新完成后只有update才能保存到数据库中

成功贵在坚持
2012-11-30 08:38
hahadeai
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-29
收藏
得分:0 
回复 2楼 mayuebo
我想知道我红色部分有没有写对?? 如果对了为什么调试不通? 问题在哪里?
如果不对,要怎么写?
2012-11-30 08:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:3 
Find 方法,不会用了,一般都是用 SQL 来查询,更新数据库。
所以无能为力。


SQL 方法:先使用 SELECT 查询一下,如果有相同的,记下ID (编号),原数量,
然后,如果有ID,那么合并数量,按ID为关键字进行 数据更新。
无ID,使用添加 数据 更新。

授人于鱼,不如授人于渔
早已停用QQ了
2012-11-30 11:46
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
以下是引用hahadeai在2012-11-30 08:57:20的发言:

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

调试不通?如果不对?

无知
2012-11-30 11:56
hahadeai
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-29
收藏
得分:0 
回复 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 编辑 ]
2012-11-30 19:20
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:15 
"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 是给函数值起个名字而以。

授人于鱼,不如授人于渔
早已停用QQ了
2012-11-30 21:25
快速回复:ADODC控件查询问题 周一要完工,跪求各位大侠帮忙~!~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017726 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved