下面是鄙人自己编写的一个查询函数,并获取该记录的相关信息,其中SQLGetData是调用odbc中的函数,我的VB工具并没有设定变量检查,奇怪的是编译时,pcblen老通不过,需要byRef的,我就定义为:Dim pcblen as Variant 可是获取不到需要的数据,Vb6.exe还出错,希望高手指点..谢谢!
Public Function Query(ByVal TmpMaterialId As String) As Boolean
  Dim SQLstmt As String  '存放SQL语句的字符串
  Dim pcblen As Variant
  
  Me.fk_material_id = TmpMaterialId
  
  '连接数据库
  DB_Connect
  '执行SQL语句
  SQLstmt = " SELECT * FROM h_storage_detail WHERE fk_material_id = '" + TmpMaterialId + "' "
  OdbcExt (SQLstmt)
  '从结果集中读取数据,如果有数据,则Query = True;否则 Query = False
  If SQLFetch(Hstmt) = SQL_NO_DATA_FOUND Then
    Query = False
    Exit Function
  Else
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 2, 1, ColVal, Lench(ColVal), pcblen)
    Me.material_name = TrimStr(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 3, 1, ColVal, Lench(ColVal), pcblen)
    Me.material_total = Val(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 4, 1, ColVal, Lench(ColVal), pcblen)
    Me.usable_material_quantity = Val(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 5, 1, ColVal, Lench(ColVal), pcblen)
    Me.damaged_material_quantity = Val(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 6, 1, ColVal, Lench(ColVal), pcblen)
    Me.material_unit = TrimStr(ColVal)
    
    ColVal = String(400, 0)
    Rc = SQLGetData(Hstmt, 7, 1, ColVal, Lench(ColVal), pcblen)
    Me.material_description = TrimStr(ColVal)
  End If
  '释放语句句柄
  Rc = SQLFreeStmt(Hstmt, SQL_DROP)
  Query = True
  '断开连接
  DB_Disconnect
End Function