2010-10-08 10 views
0

J'ai besoin d'insérer des données de DB dans un autre DB. Je lance cette requête de VB.NET:Requête d'accès de VB.NET - Pour insérer des données bien qu'elles soient NULL

par exemple:

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

Champ "campo1" est un entier (en DBdestino)

Mais parfois, la valeur "valor1" (en DBOrigen) est NULL. Si j'exécute la requête précédente, elle renvoie une erreur et n'insère aucune donnée.

Comment puis-je insérer des données si "valor1" est parfois NULL?

Répondre

0

Je doute que votre problème soit dû aux valeurs Null dans valor1, sauf si le champ campo1 rejette Nulls.

Vous avez besoin d'une instruction INSERT acceptée par le moteur de base de données Access. Par exemple, cette instruction exécutée dans Access avec ouverture DBDestino.mdb:

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

Je ne suis pas compétent avec VB.Net, mais je pense que vous pouvez ouvrir une connexion à DBDestino.mdb, puis exécuter le même INSERT déclaration qui fonctionne dans 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 

J'ai testé que sur mon système, et les valeurs de tablaOrigen ont été avec succès insérés dans tablaDest, inclus les valeurs nulles.