En sql con parámetros Mayor que Menor que

Mi pregunta es esta en esta sub de vb 6.0 .

Dim ingreso As Double
ingreso = Val(Textvalorabuscar.Text)
Adodcmovimientos.RecordSource = "select * from tablamovimientos where [importe_ing] > 100 '"ingreso & "'"
'Adodcmovimientos.RecordSource = "SELECT * From TablaMOVIMIENTOS WHERE [TablaMOVIMIENTOS.IMPORTE_ING] > '" & ingreso & "'"
Adodcmovimientos.Refresh
Set grillamovimientos.DataSource = Adodcmovimientos
La sentencia sql que tiene el operador > funciona perfectamente, pero la que tiene '" & ingreso & "'" : me contesta que no coinciden los valores, y no doy con la solución .

1 respuesta

Respuesta
2

Si el campo importe (como parece lógico) es numérico, no le puedes pasar un valor de texto, que es lo que haces al poner las comillas simples alrededor de la variable ingreso, es decir, tu SQL terminaría así:

...WHERE [TablaMOVIMIENTOS.IMPORTE_ING] > " & ingreso 

o, mejor aún, para asegurarte que tenga algún valor y no te salte un posible error:

...WHERE [TablaMOVIMIENTOS.IMPORTE_ING] > " & Nz(ingreso,0)

Hola Sveinbjorm acabo de recibir tu respuesta y >"& ingreso  funciona perfectamente gracias , pero me dices que mejor > "&NZ(ingreso,0) Y al probara me dice NZ sub o funcion no definida me gustaría si no es mucho pedir , mme explicases >"&Nz(ingreso,0) cuando lo vi me suena mucho pero no se lo que es.

Nz es una función ( en VBA) para convertir los valores nulos en otro valor, 0 en este caso.

Si estás trabajando con vb6, como no domino ese lenguaje, es probable que haya metido la pata y no exista...

¡Gracias! Es aso usare > "& ingreso esto funciona perfecto en vb 6.0 y si da algún error lo solucionare con ( on error resumr next ).

Muchas gracias por todo y un saludo.

Hola Sveinbjorm perdo que abuse estoy creando otra SQL basada en la anterior pero así

Private Sub Cmdentre_Click()
Dim ingreso As Double
Dim numero2 As Double
ingreso = Val(Textvalorabuscar.Text)
numero2 = Val(Textvalor2.Text)
'Adodcmovimientos.RecordSource = "select * from tablamovimientos where [importe_ing] > 100 and [importe_ing]< 110"
Adodcmovimientos.RecordSource = "SELECT * From TablaMOVIMIENTOS WHERE [TablaMOVIMIENTOS.IMPORTE_ING] > " & ingreso And [TablaMOVIMIENTOS.IMPORTE_ING] < " & numero2"
Adodcmovimientos.Refresh
Set grillamovimientos.DataSource = Adodcmovimientos
formatogrillamovimientos
End Sub

y en la sql con variables me dice No coinciden los tipos , y los dos están dimensionados igual .En que fallo ? Gracias

Te falla encadenar bien las distintas partes de la Sql:

... WHERE [TablaMOVIMIENTOS.IMPORTE_ING] > " & ingreso & " And [TablaMOVIMIENTOS.IMPORTE_ING] < " & numero2

¡Gracias! hay algún tutorial don de pueda aprender ese fallo ? .

Y gracias por todo

Sveinbjorm estoy empezando a comprender y es gracias a ti Genio Un saludo.

Hay muchos manuales por internet... yo te recomendaría que ojeases éste: https://www.w3schools.com/sql/default.asp

y en castellano, y orientado sobre todo a Access, el de Neckkito: http://neckkito.xyz/nck/index.php/manuales/49-curso-sql

¡Gracias! Lo miraré

Hola Sveinbjorn recurro de nuevo a ti ya que por más que reviso no logro concatenar bien las sql.

Esta funciona bien

.Open "SELECT Sum(TablaMOVIMIENTOS.IMPORTE_GASTO) AS SumaDeIMPORTE_GASTO From TablaMOVIMIENTOS GROUP BY (TablaMOVIMIENTOS.[concepto gasto]) HAVING (TablaMOVIMIENTOS.[concepto gasto])='" & gasto & "'"

yo puse esto

.Open "SELECT Sum(TablaMOVIMIENTOS.IMPORTE_GASTO) AS SumaDeIMPORTE_GASTO From TablaMOVIMIENTOS GROUP BY (TablaMOVIMIENTOS.[concepto gasto]) HAVING (TablaMOVIMIENTOS.[concepto gasto])='" & gasto & "'" and tablamovimientos.mes='" & mes & "'"  Y no funciona

Pero me gustaría añadirle otro campo con AND para comprara concepto de gasto por mes, donde el mes lo doy por teclad.

Esperando no molestar y respuesta Un saludo y gracias

Te sobran las comillas dobles que pones justo antes del AND:

.Open "SELECT Sum(IMPORTE_GASTO) AS SumaDeIMPORTE_GASTO From TablaMOVIMIENTOS GROUP BY ([concepto gasto]) HAVING ([concepto gasto])='" & gasto & "' and mes='" & mes & "'" 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas