这是rs_gas的定义:Dim rs_yb As New ADODB.Recordset
这是程序:
If rs_gas.State = adStateOpen Then
      rs_gas.Close
   End If
  rs_gas.CursorLocation = adUseClient
  rs_gas.Open sqltg, conn, adOpenStatic, adLockOptimistic
这段程序里面的没用过一个adodc控件,都是上来dim几个类似rs_yb一类的,程序里面出现的也都是rs_什么什么,但是数据库里的表就叫gas,rs_gas是怎么和数据库里gas的数据连起来的,那位高人能帮帮我?
另外这是一段删除的命令,
Dim answer As String
   answer = MsgBox("确定要删除吗?", vbYesNo, "")
   '确实删除
   
    If answer = vbYes And SSTab1.Tab = 0 Then
      rs_water.Delete  '删除当前记录
      rs_water.Update  '更新删除
      MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
我照着样子编了一段,
If answer = vbYes And SSTab1.Tab = 1 Then
      rs_gas.Delete  '删除当前记录
      rs_gas.Update  '更新删除
      MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
但是发现程序虽然能执行,但是数据库里的数据并没有被删除,实在是弄不明白~~~望大家帮助

解决方案 »

  1.   

    建议看看msdn中关于ado的那部分。
      

  2.   

    老兄,多看看帮助,有提问的时间,还不如在csdn中搜索一下数据库的操作,ado的操作
      

  3.   

    dim sql as string
    sql="delete from tb where id=123"
    conn.execute sql
      

  4.   

    你连接了数据库的表没有?
    你看看sqltg是怎么赋值的
    是不是这样:
    sqltg== "select * from gas"
      

  5.   

    '数据库简易操作
    Private Sub databace()
        Dim conn As New ADODB.Connection   '创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行
        Dim rs As ADODB.Recordset    '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用
        Dim CnStr As String, Sql As String  '创建两个字符串变量分别存放两个集合的SQL语句代码段    '装载数据库信息
        Dim FileName As String '文件路径和文件名
        Dim DbIp As String     '数据库地址
        Dim DbName As String   '数据库名
        Dim DbUser As String   '数据操作员用户名
        Dim DbPw As String     '操作员密码    FileName = App.Path & "\'数据库名'"
        DbIp = "数据库地址"
        DbName = "数据库名"
        DbUser = "数据操作员用户名"
        DbPw = "操作员密码"
        '连接SQL数据库
        '------------------
        CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER=" & DbIp
        
        '也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source=" & DbIp & ";DATABASE=" & DbName & ";UID=" & DbUser & ";pwd=" & DbPw
        
        conn.Open CnStr '使用 Connection 集合的 Open 方法 与数据库建立连接
        
    '2     Print Recordset集合的常用方法
        '==========================
        
        '1)打开一个表
        '------------
        
        Sql = "select * from 表名" 'SQL查询语句
        Set rs = New ADODB.Recordset '新建一个实例
        rs.Open Sql, conn '使用 Open 方法打开数据库中的一个表
        
        '注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容
        '
        'rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。
        '
        '以下参数代表了这个可选值的含义
        '0 = adOpenForwardOnly (默认值)打开仅向前类型游标。
        '1 = adOpenKeyset       打开键集类型游标。
        '2 = adOpenDynamic      打开动态类型游标。
        '3 = adOpenStatic       打开静态类型游标。
        '
        '虽然使用以上方法可以可以实现行坐标(游标)的任意移动,但是仍然无法写入数据。因此需要进一步的对Open 方法进行完善
        
        'rs.Open Sql, conn, 1, 3  '后面的3是确定读写权限的
        
        '以下参数代表了这个可选值的含义
        '1 = adLockReadOnly        (默认值)只读 — 不能改变数据。
        '2 = adLockPessimistic     保守式锁定(逐个) — 在编辑时立即锁定数据源的记录。
        '3 = adLockOptimistic      开放式锁定(逐个) — 只在调用 Update 方法时才锁定记录。
        '4 = adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。
        '
        '2)读写数据
        '----------
        '增加一行记录并对新记录的内容进行修改并保存可以如下写法
        rs.AddNew '增加一行记录
        rs("...") = "..."  '数据读写操作
        ...
        rs.Update '保存写入资料,如果使用只读权限,则不能使用这个方法
        rs.Close  '这个方法用来关闭你所代开的表,如果不使用这个方法也可以,但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重
        
    2     Print 对数据进行筛选和排序
        '=======================
        Sql = "select * from 表名" 'SQL查询语句
        '以上为打开一个表的所有内容
        
        Sql = "select top 50 * from 表名" 'SQL查询语句
        '以上为只打开前50行的记录
        
        Sql = "select top 50 列名1,列名2,列名5 from 表名" 'SQL查询语句
        '以上为只打开前50行的记录,并且只打开第1、2、5列数据
        
        Sql = "select * from 表名 where 列名1='" & 字段 & "'" 'SQL查询语句
        '以上为一个简单的筛选,表示打开的内容必须符合[列名1='" & 字段 & "'"]的内容
        '需要注意的是,数据库列的类型必须匹配,比如字符串类型需要以单引号括起
        '而数字类型则不能用单引号括起
        '另外SQL语句还支持通配符,例如 列名1 like '%" & 字段 & "%'" 表示包含[字段]
        '在表达式中的匹配
        '? _(下划线) 任何单一字符
        '* or %        零个或多个字符
        '#             任何单一数字(0 — 9)
        '[charlist]    任何在字符表中的单一字符
        '[!charlist]   任何不在字符表中的单一字符
        '注:根据数据库的不同?、_和*、%的应用有所差别,比如SQL只使用% 和 _ 分别代表多个字符和单一字符
        
        Sql = "select * from 表名 where 列名1='" & 字段 & "' ORDER BY 字段1 ASC" '对查询结果进行升序排列
        Sql = "select * from 表名 where 列名1='" & 字段 & "' ORDER BY 字段1 DESC"  '对查询结果进行降序排列
        Sql = "select * from 表名 where 列名1='" & 字段 & "' ORDER BY 字段1 DESC, ORDER BY 字段2 DESC"  '对查询结果进行多维降序排列(速度奇慢,不推荐使用)
        
    3     Print Recordset集合的常用属性方法
        '==============================
        rs.BOF        '是否游标在最上边
        rs.EOF        '是否游标在最下边
        rs.RecordCount    '记录集的行数(如果使用像前类型的游标,可能返回不准确)
        rs.AddNew    '新建一行记录
        rs.Update    '保存当前行被修改的记录
        rs.Delete    '删除当前行
        rs.Close    '关闭记录集
        
    4     Print Fields集合的一些属性的解释
        '=============================
        '以下为简写,正常情况需要rs.Fileds.但是Fields属于Recordset的一个默认集合,因此可以省略
        
        'rs() 括号内可以是列名也可以是列的序号例如:rs("姓名")、rs(3) 都是是可以的
        
        rs(3).Name  '返回列名
        rs(3).Type  '返回列的类型
        rs(3).Value '返回当前行的值
        rs.Fields.Count '返回列数
    End Sub