从VB.NET访问查询 - 插入数据虽然它们是NULL

时间:2010-10-08 11:53:03

标签: vb.net ms-access null

我需要将数据从DB插入另一个DB。我从VB.NET运行这个查询:

例如:

Insert into DBDestino.tablaDest (campo1,campo2)
select valor1,valor2 
from DBOrigen.tablaOrigen 

字段“ campo1 ”是整数(在DBdestino中)

但有时值“ valor1 ”(在DBOrigen中)为NULL。如果我运行上一个查询,它将返回错误,并且不会插入任何数据。

如何插入数据虽然“ valor1 ”有时会为NULL?

1 个答案:

答案 0 :(得分:0)

我怀疑你的问题是由于valor1中的Null值,除非campo1字段拒绝Null。

您需要一个Access'数据库引擎将接受的INSERT语句。例如,在Access中使用DBDestino.mdb执行此语句打开:

INSERT INTO tablaDest ( campo1, campo2 )
SELECT valor1, valor2
FROM tablaOrigen IN 'C:\Access\DBOrigen.mdb';

我不熟悉VB.Net,但我认为您可以打开与DBDestino.mdb的连接,然后执行在Access中工作的相同INSERT语句。

Imports System.Data.OleDb
Module Module1
    Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim icount As Integer
    Dim strInsert As String
    Sub Main()
        cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                 "Data Source=C:\Access\DBDestino.mdb;")
        cn.Open()
        strInsert = "INSERT INTO tablaDest ( campo1, campo2 ) " & _
            "SELECT valor1, valor2 " & _
            "FROM tablaOrigen IN 'C:\Access\DBOrigen.mdb';"
        cmd = New OleDbCommand(strInsert, cn)
        icount = cmd.ExecuteNonQuery
        Debug.Print(icount)
        cn.Close()
    End Sub
End Module

我在我的系统上测试了这个,并且tablaOrigen中的值已经成功插入到tablaDest中,包括Nulls。