标题:想高手请教
只看楼主
pxinfosoft
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2018-9-9
结帖率:50%
已结贴  问题点数:20 回复次数:3 
想高手请教
Private Sub DataRefresh()
  Dim StrSearch As String
    Dim StrGroup As String
  Dim TmpSource As String
  Dim TmpS1 As String
  Dim TmpS2 As String
  StrSearch = ""
  StrGroup = " Group By "
  StrSearch = ""
  If Check1.Value <> 1 Then
    If Len(Trim(dco_UType.Text)) > 0 Then   '设置一级分类
      StrSearch = " And t.UpperId=" + Trim(dco_UType.BoundText)
    End If
    If Len(Trim(dco_Type.Text)) > 0 Then   '设置二级分类
      StrSearch = " And s.TypeId=" + Trim(dco_Type.BoundText)
    End If
   If Len(Trim(dco_Store.Text)) > 0 Then   '设置原辅料名称
     StrSearch = " And OId=" + Trim(dco_Store.BoundText)
     End If
  End If
    Dim StrSearch3 As String
  If Len(Trim(txtSDate)) = 0 Then
    If Len(Trim(txtEDate)) > 0 Then
      StrSearch3 = " And  InDate<=#" + Trim(txtEDate) + "#"
    End If
  Else
    StrSearch3 = " And  InDate>=#" + Trim(txtSDate) + "#"
    If Len(Trim(txtEDate)) > 0 Then
      StrSearch3 = StrSearch3 + " And  InDate<=#" + Trim(txtEDate) + "#"
    End If
  End If
  TmpS1 = "Select s.t1Name AS 来料单位名称,s.t2Name AS 生产款号名称,s.OName AS 生产面辅料名称," _
        + "IIF(SUM(v.InAmount) IS NULL,0,SUM(v.InAmount)) AS 入库总数量" _
        + " From v_Store s Left Join" ' + "IIF(SUM(v.inSum) IS NULL,0,sum(v.inSum)) AS 制单总数"
    TmpSource = TmpS1 + " (Select * From v_StoreIn Where 1=1 " + StrSearch3 _
        + "" + StrSearch + ") v On s.OId=v.OId Group By s.t1Name,s.t2Name,s.OName"
  Adodc1.ConnectionString = Conn
  Adodc1.RecordSource = TmpSource
'  MsgBox TmpSource
  Adodc1.Refresh
   
  Set DataGrid1.DataSource = Adodc1
DataGrid1.Columns(0).Width = 0
  DataGrid1.Columns(1).Width = 2200
  DataGrid1.Columns(2).Width = 2000
  DataGrid1.Columns(3).Width = 1500
在上面的源码中,为什么添加s.OStyle AS 型号 会出现至少一个参数未被指定值?OStyle这个字段在表Store中
我是菜鸟,还请高手指点
搜索更多相关主题的帖子: If Then Trim And End 
2018-09-09 23:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:14 
静态分析真是不好看。

你把你最终报错时生成的SQL命令显示出来看一下。

至少一个参数未被指定值,说明 SQL命令 里出现不被认定的标识符。

授人于鱼,不如授人于渔
早已停用QQ了
2018-09-10 10:41
pxinfosoft
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2018-9-9
得分:0 
回复 2楼 风吹过b
表List
Id    DId    OId    mount
363    81    70    5000
364    81    80    1600
365    81    78    1800
367    81    800    1800
370    81    74    1200
371    81    71    1200
372    81    60    13000
373    81    68    13000
374    81    62    3300

表Draw
Id    CreateDate    DepId    Flag
81    2018-9-29    17    0

表Store
OId    Name    mount
70    c1       8000
80    c2       3000
78    c3       5000
800    c4       6000
74    c5       7000
71    c6       3000
60    c7       20000
68    c8       20000
62      c9       4000

Draw.Id=List.DId
List.OId=Store.OId

List类模块代码
'按照领用单号读取所有明细,并更改库存数量
Public Sub UpdateStore(ByVal TmpId As Long)
  Dim rs As New ADODB.Recordset  '定义结果集对象
  Dim lAmount As Integer   '领用数量
  Dim TmpOId As Long  '生产辅料编号
  
  '设置SELECT语句,读取编号为TmpId的记录
  SqlStmt = "SELECT * FROM DrawList WHERE DId=" + Trim(TmpId)
  '将结果集读取到rs中
  Set rs = QueryExt(SqlStmt)

  
  Do While Not rs.EOF
   MyStore.mount = 0 - rs.Fields(3) '领用数量
  MyStore.UpdateAmount (rs.Fields(2)) '生产辅料编号
    rs.MoveNext
      Loop
   
  
End Sub

Store类模块代码
'更新库存数量
Public Sub UpdateAmount(ByVal OriOId As Long)
  SqlStmt = "UPDATE Store Set mount=mount+" + Trim(mount) _
          + " WHERE OId=" + Trim(Str(OriOId))
  SQLExt (SqlStmt)
End Sub

'审核结算 当表Draw中Flag为0时允许
Private Sub Cmd_Check_Click()
  If Adodc1.Recordset.EOF Then
    MsgBox "请选择记录"
    Exit Sub
  End If
  On Error Resume Next
  If Adodc1.Recordset.Fields(4) = 0 Then
    '确认后更改领用单标志Flag值为1
    MyDraw.UpdateFlag (Adodc1.Recordset.Fields(0))
    '按照领用单明细更改当前库存数量
    MyList.UpdateStore (Adodc1.Recordset.Fields(0))
       DataRefresh
  Else
    MsgBox "已经领用"
  End If
End Sub


模块DbFunc代码
'== 标记数据库是否连接 ==
Private IsConnect As Boolean
'== 标记执行Connect()函数后,访问数据库的次数 ==
Private Connect_Num As Integer
Private cnn As ADODB.Connection   '连接数据库的Connection对象
Private rs As ADODB.Recordset     '保存结果集的Recordset对象

'连接数据库
Private Sub Connect()
  '如果连接标记为真,则返回。否则会出错
  If IsConnect = True Then
    Exit Sub
  End If
  
  '关键New用于创建新对象cnn
  Set cnn = New ADODB.Connection
  '设置连接字符串ConnectionString属性
  cnn.ConnectionString = Conn
  '打开到数据库的连接
  cnn.Open
  '判断连接的状态
  If cnn.State <> adStateOpen Then
    '如果连接不成功,则显示提示信息,退出程序
    MsgBox "数据库连接失败"
    End
  End If
  
  '设置连接标记,表示已经连接到数据库
  IsConnect = True
End Sub

'断开与数据库的连接
Private Sub Disconnect()
  Dim rc As Long
  '如果连接标记为假,标明已经断开连接,则直接返回
  If IsConnect = False Then
    Exit Sub
  End If
  '关闭连接
  cnn.Close
  '释放cnn
  Set cnn = Nothing
  '设置连接标记,表示已经断开与数据库的连接
  IsConnect = False
End Sub

'使用Connect_Num控制数据库连接
Public Sub DB_Connect()
  Connect_Num = Connect_Num + 1
  Connect
End Sub
Public Sub DB_Disconnect()
  If Connect_Num >= CONNECT_LOOP_MAX Then
    Connect_Num = 0
    Disconnect
  End If
End Sub
'强制关闭api方式访问的数据库,计数器复位
Public Sub DBapi_Disconnect()
  Connect_Num = 0
  Disconnect
End Sub

'执行数据库操作语句
Public Sub SQLExt(ByVal TmpSQLstmt As String)
  '创建Command对象cmd
  Dim cmd As New
  
  '连接到数据库
  DB_Connect
  '设置cmd的ActiveConnection属性,指定与其关联的数据库连接
  Set cmd.ActiveConnection = cnn
  '设置要执行的命令文本
   = TmpSQLstmt
'MsgBox TmpSQLstmt
  '执行命令
   cmd.Execute
  '清空cmd对象
  Set cmd = Nothing
  '断开与数据库的连接
  DB_Disconnect
End Sub

'执行数据库查询语句
Public Function QueryExt(ByVal TmpSQLstmt As String) As ADODB.Recordset
  '创建Recordset对象rst
  Dim rst As New ADODB.Recordset
  
  '连接到数据库
  DB_Connect
  '设置rst的ActiveConnection属性,指定与其关联的数据库连接
  Set rst.ActiveConnection = cnn
  '设置游标类型
  rst.CursorType = adOpenDynamic
  '设置锁定类型
  rst.LockType = adLockOptimistic
  '打开记录集
  rst.Open TmpSQLstmt
  '返回记录集
  Set QueryExt = rst
End Function
不能全部冲减Store表中mount库存数据,只能结算到表List中DId为81的5条数据,到第6条时提示对象库关闭时不允许操作
2018-10-02 14:19
pxinfosoft
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2018-9-9
得分:0 
回复 2楼 风吹过b
错误3704 ,对象关闭时不允许使用
2018-10-02 14:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489714-1-1.html




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

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