Visual Basic - Establecer una condición con años

Life is soft - evento anual de software empresarial
   
Vista:

Establecer una condición con años

Publicado por Alberto (76 intervenciones) el 12/03/2018 13:07:19
Llevo ya varias horas sin darle en el quid. A ver si sois tan amables de sacarme del atolladero.
Tengo una tabla con un campo fechavto (fecha vencimiento) y deseo sumar la columna importe para todos los registros que tienen en su fecha de vencimiento un año determinado, p.e. el 2018.
El campo fechavto lo tengo definido como fecha 00/00/0000.
anovcto = "2018"
He puesto en el código
Rs.Open "SELECT SUM (importe) AS importex FROM prestamos WHERE..... YEAR(fechavto) = "anovencto", ", Cn, ......
Todas las otras condiciones las reconoce, pero en cuanto a la fecha me dice que no coinciden los tipos. He hecho todas las variaciones, combinaciones y permutaciones que se me han ocurrido con las comas, sin resultado positivo.
En vista de que con el año no tenía éxito he ido a la fecha completa poniendo
fechafinal = "31/12/2018"
Rs.Open "SELECT SUM (importe) AS importex FROM prestamos WHERE..... fechavto <= fechafinal "...
Nuevamente toda clase de comas, comillas y cometas y he utilizado también
fechavto = CDATE(fechafinal). Siempre obtengo con la fecha el mismo mensaje: no coinciden los tipos.

No sé dónde estará mi error. Gracias por vuestra ayuda.
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 Andres Leonardo

Establecer una condición con años

Publicado por Andres Leonardo (1203 intervenciones) el 12/03/2018 19:47:34
Primero dinos que motor de base de datos usas

Puedes confirmarnos en que formato (de la base ) esta el campo


podrias utilizar where fechavcto >= '2018-01-01' and echavcto <= '2018-12-31'

Siempre ejecuta PRIMERO la sentencia en el motor y luego la pasas al codigo.
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

Establecer una condición con años

Publicado por Alberto (76 intervenciones) el 12/03/2018 22:05:43
Gracias por tu amable respuesta. Había intentado esa condición pero algo hice mal porque no conseguí que me funcionara.
Finalmente lo que he hecho y me funciona es
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
 
 
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\Public\VB6.0\lending.mdb"
Rs.Open "SELECT SUM(importe) AS suma21 FROM prestamos WHERE platform = """ & "Lendix" & """ And year(fechafin) = """ & "2018" & """ ", Cn, adOpenStatic, adLockOptimistic
If Not IsNull(Rs(0)) Then
   importex = Rs(0)
Else
   importex = 0
End If
MsgBox importex, , "X21"
Rs.Close

El procedimiento que indicas es muy intuitivo y debería haberme funcionado pero como dije he hecho algo mal y no me funcionó. Mil gracias.
Lo del 21 que he puesto es porque estaba haciendo esto para ponerlo en un gráfico con MsChart que me está quedando muy chulo.
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

Establecer una condición con años

Publicado por Juan Gilberto (315 intervenciones) el 13/03/2018 17:58:48
La funcion YEAR espera un valor numerico, por lo tanto arma tu Select sin comillas en el año

"SELECT SUM(importe) AS suma21
FROM prestamos
WHERE platform = 'Lendix' AND YEAR(fechafin) = 2018" , Cn, adOpenStatic, adLockOptimistic
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

Establecer una condición con años

Publicado por Alberto (76 intervenciones) el 13/03/2018 18:12:50
Seguramente sea ésta la única opción que no haya probado porque le he dado muchas vueltas hasta que el fin me funciona. La verdad es que no había encontrado ni en la red ni en el tocho de Fco J. Ceballos aclaración al problema. Había probado la solución que ha propuesto Andrés Leonardo pero por lo visto hice yo algo mal y no me funcionó. Gracias por tu consejo.
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
Revisar política de publicidad