none
Error de sintaxis 3075 (falta operador) en la consulta RRS feed

  • Pregunta

  • Hola, estoy intentando introducir datos desde un formulario en VB a una BD en Postgres. La tabla destino tiene dos campos, uno autonumérico y otro de tipo array [] texto.

    Desde postgres para introducir datos hay que hacer la sentencia "insert into tabla (campo1) values (array['valor','valor2']);"

    Lo que he hecho es un botón que almacena los valores entre comillas simples y luego esto pasa a la sentencia sql de inserción.

    Os paso el código para saber lo que hay que cambiar.

    Private Sub cmdPruebas_Click()
    Dim strsql As String, resultado As String, salida As String

    Dim db As Database
    dbconnect = "ODBC;DRIVER=PostgreSQL ANSI;UID=***;PWD=***;PORT=5432;SERVER=***.***.**.**;DATABASE=prueba;DSN=C:\****"
    Set db = OpenDatabase("", False, False, dbconnect)
    resultado = [resu] -->> Aquí almacenamos los valores con comillas 'valor1','valor2'
    strsql = "insert into prueba_arrays (tipo_intervencion) values"
    salida = "(array[" & resultado & "]);"



    DoCmd.SetWarnings False
    DoCmd.RunSQL strsql & salida
    DoCmd.SetWarnings True

    Cualquier ayuda sería inestimable.

    Gracias

    • Cambiado Enrique M. Montejo jueves, 14 de julio de 2016 14:08 Programación con VBA desde Microsoft Access.
    jueves, 14 de julio de 2016 12:31

Todas las respuestas

  • Hola

    Buscando un poco, parece que el problema es claramente de sintaxis de tu query

    Cada valor del array tiene que ir entre llaves, según viene aquí Documentación tipo array

    Suerte...


    José Mª Fueyo

    viernes, 15 de julio de 2016 6:14
  • Hola, gracias por responder, lo he intentado así, pero sigue dando el mismo problema, además corta la cadena antes de terminar, es decir, piensa que el array termina en el primer elemento. Por ejemplo, he puesto varias palabras que quedaban de este modo: ['Misa'], ['Funeral'], ['Cantico'] y decía este mensaje  [..] la expresión de consulta 'array[['Misa']' es decir, que no leía el resto de elementos del array.

    Se os ocurre otro fallo que esté cometiendo en la consulta?

    Saludos y gracias

    miércoles, 20 de julio de 2016 7:47
  • He encontrado el fallo, al ejecutar DoCmd.RunSQL lo lanzaba a Access y no a PostgreSQL. Por tanto había que ejecutar en la variable DATABASE = db.

    db.Execute strsql & salida, dbPassThrough para que vaya directo. Y funciona!!!

    GRacias por todo

    miércoles, 20 de julio de 2016 8:56