如题。请各位帮忙,最好有示例语句。
解决方案 »
- 初學,VB怎么調用TLB文件中的屬性方法
- 请问,我想要用代码实现选中listbox的某一指定行,应该怎样做?
- 高分相求EXCEL控件?
- 打印问题
- 请高手帮忙,关于MSCOMM控件接受二进制数据的问题(附原码)?
- 超急:我在一个窗体中存放的控件数目达到了上限,而我还要放,如何解决?(在线等)
- 在线的朋友帮帮!!!
- 请帮忙分析
- 请问在WIN2000下如何让CTL+ALT+DEL发现不了你的程序?急急急!!!
- 如何将文本文件中的文本读入VB字符串变量中?
- 散分哦!^_^散分哦!先来先得,不来就不得!!!!
- VB里面怎么执行动态生成的字符串表达式???如objCmd("@"& FieldName) = Fieldvalue
Insert into sql value (a0,a1,a2,...).....
dim sqlstr as string
dim sqlstr1 as string
dim i as integer
for i=0 to 29
if rs.rdocolumns(i).type then 'rs.rdoColumns(i)为数据库表的某一字段
'字段类型为字符,在两边用引号括起来
'函数NONULL()用于防止空值出现
sqlstr=sqlsr&&"'"&&nonull(a(i))&&"',"
else
'字段类型为数字型
sqlstr=sqlstr&&nonull(a(i))&&","
end if
next
'去掉最后一个逗号分隔符
sqlstr=left(trim(sqlstr),len(trim(sqlstr))-1)
'sqlstr1="insert into sql values("&&sqlstr&&")"
..... '执行插入语句
dim db as adodb.connection '源数据源
dim rs as adodb.recordset
set db =new adodb.connection
set rs =new adodb.recordset
dim sql as string
db.open 数据源
sql=记录集
rs.open sql,db
do while rs.eof
dim db1 as adodb.connection '目标数据源
dim rs1 as adodb.recordset
set db1 =new adodb.connection
set rs1 =new adodb.recordset
dim sql1 as string
db1.open 数据源
sql1=记录集
rs1.open sql1,db1,2,2 '目标数据源
rs1.addnew
rs1("目标标字段")=rs("源字段")
rs1.update
rs.movenext
loop
如果在同一个数据库中的两个表中,可以使用insert into ....select * from ....来实现,速度应该是很快的。如果在不同数据库中的两个表中操作呢?比如:一个是access数据库,一个是sql server数据库。
楼上提供的几种方法速度是不是较慢。我原来是用ado.addnew..... ado.update,一条一条来写入的,速度很慢。使用insert是不是就很快呢? 请各位指教。
mdbcn.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;DBQ=" & inboxpath & dw & ".up"
mdbcn.Open
sn.Open "select * from aaa", mdbcn, adOpenDynamic, adLockOptimistic
ProgressBar1.Max = sn.RecordCount + 12: DoEvents
Do While Not sn.EOF
xl1 = 0: xl2 = 0: xl3 = 0: xl4 = 0: yhid = 0
dy.Open "select * from aaa where 编号='" & sn("编号") & "'", cn, adOpenDynamic, adLockOptimistic
If Not dy.EOF Then
yhid = IIf(IsNull(dy("顾客id")), 0, dy("顾客id"))
End If
sn1.Open "select * from bbb where id=" & sn("顾客id"), mdbcn, adOpenDynamic, adLockOptimistic
If Not sn1.EOF Then
'增加主管单位
zgdwid = 0
If sn1("主管单位id") > 0 Then
sn2.Open "select * from bbb where id=" & sn1("主管单位id"), mdbcn, adOpenDynamic, adLockOptimistic
If Not sn2.EOF Then
dy2.Open "select * from bbb where 编号='" & sn2("编号") & "'", cn, adOpenDynamic, adLockOptimistic
If dy2.EOF Then dy2.AddNew
For i = 1 To sn2.Fields.Count - 1
dy2.Fields(i) = IIf(IsNull(sn2(dy2.Fields(i).Name)), Null, sn2(dy2.Fields(i).Name))
Next
dy2("管理单位id") = dwid
dy2.Update
zgdwid = dy2("id")
dy2.Close
End If
sn2.Close
End If
sn1.Open "select * from h_审验记录 where 车辆id=" & sn("id"), mdbcn, adOpenDynamic, adLockOptimistic
dy1.Open "select * from h_审验记录", cn, adOpenDynamic, adLockOptimistic
Do While Not sn1.EOF
dy1.AddNew
For i = 2 To sn1.Fields.Count - 1
dy1.Fields(i) = IIf(IsNull(sn1(dy1.Fields(i).Name)), Null, sn1(dy1.Fields(i).Name))
Next
dy1("车辆id") = clid
dy1.Update
sn1.Delete
sn1.MoveNext
Loop
dy1.Close: sn1.Close
或者是先把MDB
的数据库转换成SQL
然后再用insert语句插入到目标表中
定时自动更新
不过大多用于数据库同步
c:\trade.mdb里有一个bm表
在查询分析器运行:insert into newtable(bmmc,bmno)SELECT bmmc,bmnoFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\trade.mdb";User ID=Admin;Password=' )...bm
象这样:insert into newtable(bmmc,bmno)SELECT bmmc,bmnoFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\trade.mdb";User ID=Admin;Password=' )...bm where bmno=1001
insert into newtable(bmmc,bmno)
SELECT bmmc,bmnoFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\trade.mdb";User ID=Admin;Password=' )...bm where bmno=1001