Запрос доступа из VB.NET - чтобы вставить данные, хотя они имеют значение NULL - PullRequest
0 голосов
/ 08 октября 2010

Мне нужно вставить данные из БД в другую БД.Я запускаю этот запрос из VB.NET:

, например:

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

Поле " campo1 " является целым числом (в DBdestino)

Ноиногда значение " valor1 " (в DBOrigen) равно NULL.Если я запускаю предыдущий запрос, он возвращает ошибку и не вставляет никаких данных.

Как я могу вставить данные, хотя " valor1 " иногда имеет значение NULL?

1 Ответ

0 голосов
/ 08 октября 2010

Я сомневаюсь, что ваша проблема связана со значениями Null в valor1, если только поле campo1 не отклоняет Null.

Вам нужен оператор INSERT, который будет принимать ядро ​​базы данных Access. Например, этот оператор выполняется в Access с открытым DBDestino.mdb:

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

Я не очень разбираюсь в VB.Net, но я думаю, что вы можете открыть соединение с DBDestino.mdb, а затем выполнить тот же оператор INSERT, который работает в Access.

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.

...