Visual Basic.NET - Problemas al añadir lel resultado de una consulta a una tabla

 
Vista:
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al añadir lel resultado de una consulta a una tabla

Publicado por Miguel (281 intervenciones) el 19/01/2017 12:15:49
Te este modulo para inserta los datos de una consulta en una tabla. El nombre de las tablas se lo paso como parámetros. Origen son los datos de la consulta y Copia la tabla donde cargar el resultado de la consulta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Module modCopiaTablas
    Public Sub copiaTabla(ByVal copia As String, ByVal origen As String)
        Try
            If CuentaReg(copia) > 0 Then
                Dim sql2 As String = "DELETE FROM " & copia
                Dim cmd1 As New OleDbCommand(sql2, cn)
                cmd1.ExecuteNonQuery()
            End If
            Dim sql1 As String = "INSERT INTO " & copia & " Select * From " & origen
            Dim cmd As New OleDbCommand(sql1, cn)
            cmd.ExecuteNonQuery()
        Finally
            close()
        End Try
    End Sub
End Module

Adjunto la consulta de "Origen" y la estructura de "Copia"

En la consulta el Campo "IdOrigen" lo suprimo de las dos tablas de la consulta.


Al ejecutar el módulo me da siempre error. ¿Puede ser por suprimir el PRIMARY KEY de la tabla principal?.

Gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al añadir lel resultado de una consulta a una tabla

Publicado por Diego (190 intervenciones) el 20/01/2017 03:46:32
Buenas.... en algun momento, debe saltar un error y no llegan a ejecutarse las consultas. Tenés mal armado el Try...Catch...Finally (Donde está tu bloque Catch?) No abris la conexion, pero si la cerras....

El codigo debería ser como el que sigue:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub copiaTabla(ByVal copia As String, ByVal origen As String)
        Try
           cn.open() '<<<<<< Esta linea es necesaria para abrir la conexion
 
           If CuentaReg(copia) > 0 Then
                    Dim sql2 As String = "DELETE FROM " & copia & " WHERE 1" '<<<<<<< Esa condicion, tiene que estar
                    Dim cmd1 As New OleDbCommand(sql2, cn)
                    cmd1.ExecuteNonQuery()
            End If
 
 
               Dim sql1 As String = "INSERT INTO " & copia & " Select * From " & origen
               Dim cmd As New OleDbCommand(sql1, cn)
               cmd.ExecuteNonQuery()
            Catch '<<<<<<<<< Este bloque Catch, no lo tenias definido, en caso de error, muestra en cuadro de mensaje
                        MsgBox "Error: " & err.description
              Finally
                       cn.close() '<<<<<<<<< En tu codigo, omitis el objeto cn (que aparentemente representa tu conexion), 
               End Try
    End Sub


Espero haberte orientado.
Saludos y +Bytes,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Problemas al añadir lel resultado de una consulta a una tabla

Publicado por arbol (166 intervenciones) el 20/01/2017 20:38:15
Saludos
instala anydesck y me envias el id para guiarte en como resolver . es facil realizar lo que dices
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-3
Comentar