注册 登录
编程论坛 VB6论坛

两个Adodc赋值问题?

sncelpl 发布于 2022-07-08 10:49, 2445 次点击
Adodc2.Recordset.AddNew
            For i = 0 To 32
                Set Adodc1.Recordset.Fields(i) = Adodc2.Recordset.Fields(i)
            Next
            Adodc2.Recordset.Update
            Adodc1.Recordset.MoveNext
        Adodc1.Recordset.MoveFirst

报Set Adodc1.Recordset.Fields(i) = Adodc2.Recordset.Fields(i)属性的使用无效,是什么原因。
9 回复
#2
apull2022-07-08 14:41
Fields中有没有32个字段
#3
chen35232022-07-08 16:29
Adodc2.Recordset.AddNew    '这句是给Adodc2增加记录。当没有记录时Adodc2.Fields(i)是空的吧,把空的赋给Adodc1.Fields(i)肯定出错啦
Set Adodc1.Recordset.Fields(i) = Adodc2.Recordset.Fields(i)  '是把Adodc2.Recordset.Fields(i)的值赋给Adodc1.Recordset.Fields(i),对吧?


[此贴子已经被作者于2022-7-8 16:45编辑过]

#4
sncelpl2022-07-08 19:23
回复 3楼 chen3523
Adodc2.Recordset.AddNew    '这句是给Adodc2增加记录。
Set Adodc1.Recordset.Fields(i) = Adodc2.Recordset.Fields(i)  '是把Adodc1.Recordset.Fields(i)的值赋给Adodc2.Recordset.Fields(i),
#5
sncelpl2022-07-08 19:55
回复 3楼 chen3523
Adodc2.Recordset.AddNew
            For i = 0 To 32
                 Set Adodc2.Recordset.Fields(i).Value = Adodc1.Recordset.Fields(i).Value
            Next
            Adodc2.Recordset.Update
            Adodc1.Recordset.MoveNext
            Adodc1.Recordset.MoveFirst
    now_find = Not now_find
    If MsgBox(("确定打印吗"), vbOKCancel, " 提示") = vbOK Then
电缆交流试验Report.DataMember = "dlp"
        Unload DataEnvironment
        电缆交流试验Report.Show
While Not Adodc2.Recordset.EOF()
Adodc2.Recordset.Delete
Adodc2.Recordset.MoveNext
Wend
End If
Adodc1和Adodc2分别连的一个数据库的两个数据表(两个表是一样的只是名不一样)我要把Adodc1表中的一条记录新增到Adodc2通过DataReport来打印Adodc2中的数据然后就把Adodc2中的数据删除
我用mdb的数据库没问题现在改成SQL数据库就不行了。

[此贴子已经被作者于2022-7-8 19:57编辑过]

#6
chen35232022-07-08 20:30
SQL数据库我没用过,我用mdb。解决你所说的问题,我用两个表(一个表是录入数据表,如你的Adodc1;一个表是已打印表,如你的Adodc2),通过Sql查询,把打印了的行(通过ID记录在第二个表)。还是用Sql查询把两个关联起来,想怎样显示都可以,用DataGrid控件显示数据库。我做的售货收款系统,就是这个思路,查询出货就全部显示,查询未收款时,就显示未收款。
  想象中你的数据也可以通过DataGrid控件显示数据库,DataReport与Adodc1的关联设置与你设置DataReport与Adodc2设置一样,想要打印哪一行的数据,直接点击DataGrid行,DataReport的数据就就更改了。

[此贴子已经被作者于2022-7-8 20:57编辑过]

#7
cwa99582022-07-09 18:03
为什么用set呢?赋值就是赋值,不要搞的很高深的样子。

    Adodc2.Recordset.AddNew
    For i = 0 To 32
       Adodc2.Recordset.Fields(i) = Adodc1.Recordset.Fields(i)
    Next
    Adodc2.Recordset.Update
#8
sncelpl2022-07-11 12:00
回复 7楼 cwa9958
还是不行哦,报错Adodc2.Recordset.AddNew对象变量或with块变量未设置。
#9
cwa99582022-07-12 08:25
回复 8楼 sncelpl
你不是还没有用adodc2控件连接数据库吧?
    Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\数据库.mdb;Jet OleDb:DataBase Password=1234"  '数据库密码是1234
    Adodc2.RecordSource = "select * from 表"
    Adodc2.Refresh

添加这个语句,或者在控件的属性里连接数据库。
#10
sncelpl2022-07-12 08:40
回复 9楼 cwa9958
我用的是SQL
 lsRS.AddNew
            For i = 0 To 32
                lsRS.Fields(i) = RS.Fields(i)
            Next
            lsRS.Update
            RS.MoveNext
        RS.MoveFirst
    now_find = Not now_find
 If MsgBox(("确定打印吗"), vbOKCancel, " 提示") = vbOK Then
电缆交流试验Report.DataMember = "dlp"
     Unload DataEnvironment
        电缆交流试验Report.Show

While Not lsRS.EOF()
lsRS.Delete
lsRS.MoveNext
Wend
End If


怎么让数据传完后再执行lsRS.Delete
1