• Viernes 8 de Noviembre de 2024, 09:41

Autor Tema:  MESES TRANSCURRIDOS EN UN INTERVALO DE FECHAS  (Leído 2106 veces)

willysistemas

  • Miembro activo
  • **
  • Mensajes: 42
    • Ver Perfil
MESES TRANSCURRIDOS EN UN INTERVALO DE FECHAS
« en: Lunes 18 de Octubre de 2010, 23:17 »
0
hola a todos desde ya gracias por sus aportes, bueno estoy creando esta rutina para actualizar un campo mesesvencidos con el numero de meses que han pasado de acuerdo al intervalo de fechas, realizo la consulta de actualizacion en acces y todo normal funcioan amuy bien pero cuando le hago copy al codigo sql para pegarlo en visual basic no me da ya he intentado de muchas maneras y no he podido por eso acude a este foro para que alguien me explique donde puede estar el error.

Código: Visual Basic
  1. rsmeses.open "UPDATE tblContratos SET tblContratos.mesesvencidos = DateDiff("M", cdate(fechacontrato), cdate(fechavenc)) WHERE tblContratos.idcontrato<>'0'",cn,adOpenDynamic,adLockOptimistic[code=vb]
[/code]

el erro que aparece es se esperaba fin de la instruccion y me marca el error en el parametro "M"

gracias de nuevo por a ayuda que me puedan brindar
Chaka Zulu

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: MESES TRANSCURRIDOS EN UN INTERVALO DE FECHAS
« Respuesta #1 en: Martes 19 de Octubre de 2010, 15:15 »
0
Ya se ha hablado acerca de este error...

Cuando se trabaja sobre una base de datos, el código suele funcionar, porque la base de datos acepta un parámetro de tipo string, que luego la BD, desguaza en los diferentes tipos de datos que pueda contener... del mismo modo access u otro mediador entre el código y la bd, puede aceptar determinado código como un sring, que luego interpreta.

Sin embargo cuando se acude a controles intrínsecos  de VB u otros no debidamente diseñado para determinados propósitos, una cadena como "Update ...= now" interpreta que Now (que se pone como ejemplo) es una cadena de texto, no una función. Es decir VB puro, entiende por un tipo de datos string todo lo que está entre " y otro "... así de sencillo, no es culpa de VB si determinado control, acepta órdenes mediante cadenas que luega interpreta...

Un modo sencillo de entender esto, es compararlo con Command$, cualquier programa diseñado para ello acepta una línea de comandos, que la función command recoge y convierte en la propiedad de sólo lectura Command$, pero es el programa quien luego debe dividir dicha cadena para saber que debe hacer...
Esa misma línea de comando, enviada a otro programa o control, no sabrá que hacer con ella, ya que 'él' solo obtuiene una cadena de texto y no tiene más objeto que almacenarla en memoria para que pueda luego ser leída o cambiada. Esto es exactamente lo que te pasa a tí... tu has preparado un 'command' en un programa que lo inerpreta correctamente y luego pretendes que otro programa haga con dicha cadena lo mismo que hizo el otro, pero son diseños distintos con funcionalidad distinta. Access puede admitir código como un tipo de datos string que luego interpreta y entrega a la BD, una consulta que ha sido formateada, no así otros controles de VB.

La solución pasa por realizar adecuadamente la línea de código. Las partes literales entre comillas y las partes funcionales fuera de comillas, esto implica que si quizás debas preparar previamente la cadena de consulta que quieres enviar a la bd.

Aquí unos enlaces donde se habla del mismo problema y se explica como solucionarlo...
viewtopic.php?f=39&t=42737&start=0
aquí en el mensaje 5 y 6 se trata de lo mismo:
viewtopic.php?f=143&t=43025&p=154746
«Ma non troppo»
----> ModoVacaciones = False<----

willysistemas

  • Miembro activo
  • **
  • Mensajes: 42
    • Ver Perfil
Re: MESES TRANSCURRIDOS EN UN INTERVALO DE FECHAS
« Respuesta #2 en: Lunes 1 de Noviembre de 2010, 14:04 »
0
muchas gracias por la ayuda ya he logrado resolver el problema
Chaka Zulu