Visual Basic - ejecutar sql en visual basic

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ejecutar sql en visual basic

Publicado por Jordi (14 intervenciones) el 28/04/2019 18:50:53
Buenas
Tengo la siguiente accion en sql server, que me funciona correctamente.
INSERT INTO Usuario (NIF, Nombre, Apellidos)
SELECT NIF, Nombre, Apellidos
FROM EntradesPrimeres1
WHERE NOT EXISTS (SELECT NIF FROM Usuaris WHERE EntradesPrimeres1.NIF = Usuaris.NIF"


Quiero ponerlo en una funcion de VB, pero tal como lo pongo no me funciona

1
2
3
4
5
6
7
8
9
10
11
Sub CopiarTablaUsuarios()
    Dim update As String
    update = "INSERT INTO Usuario (NIF, Nombre, Apellidos)
SELECT NIF, Nombre, Apellidos
FROM EntradesPrimeres1
WHERE NOT EXISTS (SELECT NIF FROM Usuaris WHERE EntradesPrimeres1.NIF = Usuaris.NIF"
    Using connexio
        Dim cmd As New SqlCommand(update, connexio)
        cmd.ExecuteNonQuery()
    End Using
End Sub

No se donde me he equivocado. Alguna idea?
Gracias
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 Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ejecutar sql en visual basic

Publicado por Antoni Masana (560 intervenciones) el 29/04/2019 10:00:21
Mejor asÍ (Observa que hay un espacio antes de cerrar las comillas):

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub CopiarTablaUsuarios()
    Dim update As String
    update = "INSERT INTO Usuario (NIF, Nombre, Apellidos) " & _
             "SELECT NIF, Nombre, Apellidos " & _
             "FROM EntradesPrimeres1 " & _
             "WHERE NOT EXISTS (SELECT NIF  " & _
                               "FROM Usuaris  " & _
                               "WHERE EntradesPrimeres1.NIF = Usuaris.NIF)"
    Using connexio
        Dim cmd As New SqlCommand(update, connexio)
        cmd.ExecuteNonQuery()
    End Using
End Sub

También sirve:

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub CopiarTablaUsuarios()
    Dim update As String
    update = "INSERT INTO Usuario (NIF, Nombre, Apellidos) " & VbCrLf & _
             "SELECT NIF, Nombre, Apellidos "                & VbCrLf & _
             "FROM EntradesPrimeres1 "                       & VbCrLf &
             "WHERE NOT EXISTS (SELECT NIF "                 & VbCrLf & _
                               "FROM Usuaris "               & VbCrLf & _
                               "WHERE EntradesPrimeres1.NIF = Usuaris.NIF)"
    Using connexio
        Dim cmd As New SqlCommand(update, connexio)
        cmd.ExecuteNonQuery()
    End Using
End Sub

Esteticamente es mas correcto y se lee mejor.

Estética a parte el problema para que no funcione puede ser que falta cerrar el paréntesis del segundo SELECT.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ejecutar sql en visual basic

Publicado por Jordi (14 intervenciones) el 29/04/2019 13:01:01
Buenas Antoni
Me ha ido perfecto.

Las consultas sql pasadas al vb para que las ejecute, tienen que ir siempre cada linea cerrada entre comillas y con & VbCrLf & _ al final?
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ejecutar sql en visual basic

Publicado por Antoni Masana (560 intervenciones) el 29/04/2019 13:38:11
Puede ir con o sin salto de linea.

El SQL entiende igual esto

1
SELECT * FROM file WHILE {Condicion}

Como esto:

1
2
3
SELECT *
FROM file
WHILE {Condicion}

Lo que no entiende es esto:

1
SELECT *FROM fileWHILE {Condicion}

Y para solventar esto ultimo hay que dejar espacio después de cada linea:

1
2
3
4
5
6
update = "INSERT INTO Usuario (NIF, Nombre, Apellidos)" & _
         "SELECT NIF, Nombre, Apellidos" & _
         "FROM EntradesPrimeres1" & _
         "WHERE NOT EXISTS (SELECT NIF" & _
                           "FROM Usuaris" & _
                           "WHERE EntradesPrimeres1.NIF = Usuaris.NIF)"

El resultado de esta linea de comando es esto:

1
INSERT INTO Usuario (NIF, Nombre, Apellidos)SELECT NIF, Nombre, ApellidosFROM EntradesPrimeres1WHERE NOT EXISTS (SELECT NIFFROM UsuarisWHERE EntradesPrimeres1.NIF = Usuaris.NIF)

Por eso hay que dejar un espacio antes de cerrar las comillas de cada linea o poner VbCrLf en este caso el resultado es esto

1
2
3
4
5
6
INSERT INTO Usuario (NIF, Nombre, Apellidos)
SELECT NIF, Nombre, Apellidos
FROM EntradesPrimeres1
WHERE NOT EXISTS (SELECT NIF
FROM Usuaris
WHERE EntradesPrimeres1.NIF = Usuaris.NIF)

o este otro

1
INSERT INTO Usuario (NIF, Nombre, Apellidos) SELECT NIF, Nombre, Apellidos FROM EntradesPrimeres1 WHERE NOT EXISTS (SELECT NIF FROM Usuaris WHERE EntradesPrimeres1.NIF = Usuaris.NIF)

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

ejecutar sql en visual basic

Publicado por Jordi (14 intervenciones) el 29/04/2019 19:38:16
muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar