| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1429 人关注过本帖
标题:求助关于vb6 ado adAffectGroup的使用方法
只看楼主 加入收藏
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
这并不奇怪,昨天你实验时d1024610订单的排序号恰好是最大,后来删除了,剩下的排序号最大的不符合联合查询的条件,所以没记录显示,如果你要模拟出有记录,也很简单,在企业管理器中首先运行语句"select * from 出库单 order by 排序号 desc",这时表中第一条记录即是排序号最大的,将它排序号改为0(我这里显示的是d102449,排序号为2070,我把2070改为0),再运行你的语句,这时你就可以看到两条记录了,居然不是同一订单号,见下图:
图片附件: 游客没有浏览图片的权限,请 登录注册
2014-02-06 16:54
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 20楼 w360989426
版主,现在不讨论这个问题,
1.现在问题的关键是你写的那段程序在一种情况下会出错
2.将以下代码替换下,在界面初始化的时候,datagrid中会有数据,你去点击删除的话会报错,请版主试试看
替换代码如下:
Sub 送货单确定时间和初始化控件()
    Text1.Enabled = False
    DTPicker1.Enabled = False
    sql2 = "select  出库单.订单编号,出库单.日期,出库单.地域,出库单.负责人,出库单.酒店名称,出库单.厨房,出库单.货物名称,出库单.订货量,出库单.出库数量,出库单.单价,酒店货品信息表.单位,出库单.所属公司 from 出库单,酒店货品信息表 where 出库单.酒店名称=酒店货品信息表.酒店名称 and 出库单.厨房=酒店货品信息表.厨房 and  出库单.货物名称 = 酒店货品信息表.货物品名 and  出库单.酒店名称 like '%湖州%'order by 出库单.地域,出库单.日期,出库单.负责人,出库单.酒店名称,出库单.厨房,出库单.排序号,出库单.序号"
    Adodc1.RecordSource = sql2
    Adodc1.Refresh
End Sub

2014-02-06 17:44
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 9楼 lowxiong
第一张
图片附件: 游客没有浏览图片的权限,请 登录注册

第二张
图片附件: 游客没有浏览图片的权限,请 登录注册

第三张
图片附件: 游客没有浏览图片的权限,请 登录注册


版主:请看上面三张图
第一张为 条件:排序号=‘2070’的查询结果
第二张为 数据库中的截图
第三张为 条件:排序号=‘2060’的查询结果
明显第一张没有结果而第三张有结果
而2070,2060这2个序号都是存在与数据库中的
所有这就让我很疑惑,而2070这个序号正好是select max(排序号) from 出库单的值

2014-02-06 17:58
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
排序号为2070里的货品、厨房在酒店里没有对应信息,所以查询不出来(联合查询联合项必须一一对应才显示查询记录)。
你在22楼里说的情况我检查了下,是因为你在初始化提供的sql语句里的"order by"命令前面没有空格,导致程序判断失误。这段代码是针对你sql语句的特点写的,可适应性不强,比如如果你sql语句没有排序命令,这段代码也会出错。代码修改如下即可解决:
Private Sub Command7_Click()
  Dim a As String, s As String, e As String, i As Integer
  If Adodc1.Recordset.EOF = True Then
   MsgBox "没有记录可供删除!", vbOKOnly, "温馨提示"
  Else
    If MsgBox("你真的不需要打印【" & Trim(订单编号) & "】这个订单编号的送货单吗?", vbOKCancel, "温馨提示") = vbOK Then
      订单编号 = Trim(订单编号)
      a = Adodc1.RecordSource
      i = InStr(1, a, "order by") - 1
      s = Left(a, i)
      e = Right(a, Len(a) - i)
      s = s & " and 订单编号<>'" & 订单编号 & "' "
      Adodc1.RecordSource = s & " " & e
      Adodc1.Refresh
    End If
  End If
End Sub



[ 本帖最后由 lowxiong 于 2014-2-6 18:43 编辑 ]
2014-02-06 18:36
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 24楼 lowxiong
哦。。明白了,呵呵谢谢拉。。原来是这样的啊。。不问的话,估计这个问题又要困扰我几个月了,那学习进度就慢的多了,有个高人问一问可能使我少走很多弯路,谢谢拉!再次感谢,希望能与你交个朋友。
2014-02-06 19:04
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
收藏
得分:0 
回复 23楼 w360989426
版主你好,又有一事请教,请看下面这条sql语句
select  出库单.订单编号,出库单.日期,出库单.地域,出库单.负责人,出库单.酒店名称,出库单.厨房,出库单.货物名称,出库单.订货量,出库单.单价,酒店货品信息表.单位,出库单.备注
 from 出库单 left join 酒店货品信息表 on 出库单.酒店名称=酒店货品信息表.酒店名称 and 出库单.厨房=酒店货品信息表.厨房 and  出库单.货物名称 = 酒店货品信息表.货物品名 and  出库单.酒店名称 like '%" & Text2.Text & "%' And (出库单.日期 between '" & text1.Value & "'and '" & DTPicker1.Value & "')and 出库单.负责人 like '%" & Combo1.Text & "%' and 出库单.地域 like '%" & Combo2 & "%'
order by 出库单.日期,出库单.地域,出库单.负责人,出库单.酒店名称,出库单.厨房,出库单.排序号,出库单.序号

这条语句本身么有错,但有如下问题,例如出库单中有70000条记录,但是象这样联合查询出来可能就会有 72000条记录,
解决方法是:加上 distinct 出库单.序号,就可以使出库单记录数=联合查询记录数,
但这样又有另外一个问题出现,sql语句:order by 出库单.日期,出库单.地域,出库单.负责人,出库单.酒店名称,出库单.厨房,出库单.排序号,出库单.序号
提示出错,原因为order by 中的条件,有的不包含在select distinct的项目中,

请教:该如何2全其美的解决这个问题。即可以加select distint 又可以使order by 后面的条件一个不少,还望版主指点一下!谢谢!
2014-02-07 11:21
快速回复:求助关于vb6 ado adAffectGroup的使用方法
数据加载中...
 
   



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

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