Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con sql en visual basic

Estas en el tema de Problema con sql en visual basic en el foro de Visual Basic clásico en Foros del Web. Hola tengo otro error raro porque lo parentesis estan bien. Si alguien me pudiera ayudar se lo agradeceria, gracias. Se ha producido un error 3075 ...
  #1 (permalink)  
Antiguo 27/05/2005, 12:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 19 años
Puntos: 0
Problema con sql en visual basic

Hola tengo otro error raro porque lo parentesis estan bien. Si alguien me pudiera ayudar se lo agradeceria, gracias.

Se ha producido un error 3075 en el tiempo de ejecucion: Sobra un parantesis de cierre ) en la expresion de la consulta ' (([Proveedores una Cuenta].[Clave banco]) <> '00000000')
And ((PAGOS.Transfer) = [Forms]![cuadro fechas transfer]![TransfN]) And ((PAGOS.Vencimiento) =# fecvencinto #)
And ((PAGOS.Correcta) = 'C') And ((PAGOS.Pagado) = No) And ((PAGOS.[Forma de pago]) = 'TR') And ((PAGOS.Estado) <> 'A') And ((PAGOS.Banco) ="[Forms]![cuadro fechas transfer]![Banco]')
And (([Proveedores una Cuenta].Bloqueo) <> 'BLOQUEO') And ((PAGOS.Cesión) = 0) '





1 STRSQL = "SELECT DISTINCTROW Pagos.EnEuros, [Proveedores una Cuenta].nombre as Proveedor, [Proveedores una Cuenta].CIF, [Proveedores una Cuenta].Calle, [Proveedores una Cuenta].Población AS Pobla, "
2 STRSQL = STRSQL & "Pagos.[Su factura], [Proveedores una Cuenta].[Clave banco] AS ClaBan, [Proveedores una Cuenta].[Nº de cuenta] AS CTA, Pagos.Total, [Bancos propios].Bank, "
3 STRSQL = STRSQL & "[Bancos propios].Coco, IIf(IsNull([DC]) Or [DC]='',' ',[DC]) AS DICO FROM ([Bancos oficinas para relaciones] INNER JOIN [Proveedores una Cuenta] ON "
4 STRSQL = STRSQL & "[Bancos oficinas para relaciones].[Clave para relaciones] = [Proveedores una Cuenta].[Clave banco]) INNER JOIN ([Bancos propios] INNER JOIN Pagos ON "
5 STRSQL = STRSQL & "[Bancos propios].[Clave cuenta] = Pagos.Banco) ON ([Proveedores una Cuenta].CLA_ENT = Pagos.CLA_ENT) AND ([Proveedores una Cuenta].COD_ENT = Pagos.COD_ENT) WHERE (([Proveedores una Cuenta].[Clave banco]) <> '00000000') "
6 STRSQL = STRSQL & "And ((PAGOS.Transfer) =" & [Forms]![cuadro fechas transfer]![TransfN] & ") And ((PAGOS.Vencimiento) =#" & fecvencinto & "#) "
7 STRSQL = STRSQL & "And ((PAGOS.Correcta) = 'C') And ((PAGOS.Pagado) = No) And ((PAGOS.[Forma de pago]) = 'TR') And ((PAGOS.Estado) <> 'A') And ((PAGOS.Banco) ='" & [Forms]![cuadro fechas transfer]![Banco] & "') "
8 STRSQL = STRSQL & "And (([Proveedores una Cuenta].Bloqueo) <> 'BLOQUEO') And ((PAGOS.Cesión) = 0) ORDER BY [Proveedores una Cuenta].nombre;"

9 Set Origen = PAGOS.OpenRecordset(STRSQL)
(Aqui me sale el error)


y la tabla tambien la he cambiado este trozo por este pero me sale el mismo error:

1 miSelect = "SELECT DISTINCTROW Pagos.EnEuros, [Proveedores una Cuenta].nombre as Proveedor, [Proveedores una Cuenta].CIF, [Proveedores una Cuenta].Calle, [Proveedores una Cuenta].Población AS Pobla, Pagos.[Su factura], [Proveedores una Cuenta].[Clave banco] AS ClaBan, [Proveedores una Cuenta].[Nº de cuenta] AS CTA, Pagos.Total, [Bancos propios].Bank, [Bancos propios].Coco, IIf(IsNull([DC]) Or [DC]='',' ',[DC]) AS DICO "

2 miFrom = "FROM ([Bancos oficinas para relaciones] INNER JOIN [Proveedores una Cuenta] ON [Bancos oficinas para relaciones].[Clave para relaciones] = [Proveedores una Cuenta].[Clave banco]) INNER JOIN ([Bancos propios] INNER JOIN Pagos ON [Bancos propios].[Clave cuenta] = Pagos.Banco) ON ([Proveedores una Cuenta].CLA_ENT = Pagos.CLA_ENT) AND ([Proveedores una Cuenta].COD_ENT = Pagos.COD_ENT) "

3 miWhere = "WHERE (([Proveedores una Cuenta].[Clave banco]) <> '00000000') And ((PAGOS.Transfer) =" & [Forms]![cuadro fechas transfer]![TransfN] & ") And ((PAGOS.Vencimiento) =#" & fecvencinto & "#) And ((PAGOS.Correcta) = 'C') And ((PAGOS.Pagado) = No) And ((PAGOS.[Forma de pago]) = 'TR') And ((PAGOS.Estado) <> 'A') And ((PAGOS.Banco) ='" & [Forms]![cuadro fechas transfer]![Banco] & "') And (([Proveedores una Cuenta].Bloqueo) <> 'BLOQUEO') And ((PAGOS.Cesión) = 0) "

4 miOrder = "ORDER BY [Proveedores una Cuenta].nombre;"

5 miSQL = miSelect & miFrom & miWhere & miOrder

6 Set Origen = PAGOS.OpenRecordset(miSQL)
(En la ultima linea me sale el error el mismo error)



Gracias por ayudarme.
  #2 (permalink)  
Antiguo 27/05/2005, 15:33
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
en el error elegi depurar y si no tenes abierto una ventana que se llama DE INMEDIATO presiona ctrl + G y se abrira, ahi pone esto:
? y el openRecorset, ahi te tiene que poner el script ya con las variables sustituidas por valores, esto pegalo en el query analyzer de SQL y mira donde esta la falla, luego solo corregis de nuevo en basic
  #3 (permalink)  
Antiguo 29/05/2005, 15:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 19 años
Puntos: 0
Hola xcars, no se como hacer eso me lo puedes explicar paso a paso es que aun soy novata, gracias.
  #4 (permalink)  
Antiguo 30/05/2005, 01:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
lo que te quiere decir xcars es lo siguiente:

Para poder ver que no te falla la sentencia sql, y desechar esta opción, se debe comprobar este punto. Es decir, no vale con que digas que "no sobra ningún paréntesis", sino que lo demuestres.

Para ello, lo más sencillo es lo que te ha dicho: obtener la sentencia del código que se ejecuta y después ejecutarla en tu base de datos para que te dé más datos al respecto de porqué te falla dicha sentencia.

Por pasos y con un ejemplo creo que es más fácil:

Si tenemos el código siguiente:

dim datos as string
dim rs as new ADODB.recordset

datos = "tu sql"

rs.open datos, strconn, ....


En esta última línea pones un punto de interrupción de visual basic en el código, y buscas su ejecución (es decir, tú sabrás cuándo se ejecuta esta sentencia - en un botón, al inicio de un formulario...)

Una vez que vb se haya posicionado en esa línea de tu código, puedes hacer lo siguiente.

Abrir la ventan de inmediato Ver -> Ventana de Inmediato o Ctrl + G

Se te abre una ventana en la que podrás ver los datos en ejecución actuales. Es decir, poniendo en esa pantalla:

?datos

y pulsando intro, obtendrás la sentencia SQL real que se está ejecutando.

Entonces solo tienes que ir a tu base de datos a ejecutar dcha consulta para que puedas ver el error directamente ya que casi todos las bases de datos te posicionan en el caracter donde se encuentra el error de dicha sentencia.

Eso es lo que te queria decir xcars

Y como has dicho que eras novata, la primera vez también te voy a decir esto:

Si la sentencia la tienes insertada en algún control, como por ejemplo un combo, grid, etc. sácala de dicho control y lo metes en uncódigo de prueba en tu proyecto, para que se pueda ejecutar, porque sino es algo más dificil obtener la sentencia como te hemos dicho.

Espero haberte sido de ayuda

gurgur
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:59.