Docmd.RunSQL

Sobre el problema que tenía al ejecutar una consulta desde un formulario que era a su vez subformulario de un formulario de navegación y que por tanto me pedía el parámetro del id_lead cada vez que la ejecutaba, se me ha ocurrido una alternativa que pensé que podría funcionar aunque quizás sea un poco cutre; construirme la sentencia sql a medida.
Para ello me he creado una variable intcurrentleadid donde me copio el id_lead del registro donde estoy en ese momento.
Luego ejecuto este código:
dim strsql as string
strsql = "insert into acciones ( id_lead, id_estado, estado, observaciones, id_tipo_acción ) select lead.id_lead, lead.id_estado_lead, tblestado_lead.estado_lead, 'cambio de estado' as expr1, 2 as expr2 from tblestado_lead inner join lead on tblestado_lead.id_estado_lead = lead.id_estado_lead where (((lead.id_lead)=" & intcurrentleadid & "));"
Docmd. Runsql "strsql"
Pero no pasa absolutamente nada... He comprobado que la variable me recoge correctamente el valor del id_lead e incluso me he creado he pegado el valor de strsql en un cuadro de texto para comprobarlo y queda así:
insert into acciones ( id_lead, id_estado, estado, observaciones, id_tipo_acción ) select lead.id_lead, lead.id_estado_lead, tblestado_lead.estado_lead, 'cambio de estado' as expr1, 2 as expr2 from tblestado_lead inner join lead on tblestado_lead.id_estado_lead = lead.id_estado_lead where (((lead.id_lead)=127));
¿Qué estoy haciendo mal para que no funcione?

1 respuesta

Respuesta
1
Puede que haya algo más. Tendría que mirarlo más detenidamente.
De entrada si tienes un error cuando ordenas la ejecución de la strsql. No debes de entrecomillar strsql ya que es una variable y si la entrecomillas estás pasando ese nombre como valor de la SQL a runsql.
Prueba a ejecutar el resultado que tienes en el cuadro de texto generando una consulta de datos anexados (hazlo en formato SQL y copia directamente en la ventana el texto obtenido). Si te funciona como consulta independiente el problema está en el código (por ejemplo el entrecomillado). Si no te funciona el problema puede estar en la falta de concordancia en el tipo de datos entre lo que sale del select y donde queremos ponerlo (insert into).
Cordiales saludos.
PD: No tengo ahora mismo operativo un 2010 completo (solo versiones incompletas en un par de portátiles nuevos que de momento no pienso activar ya que no me compensa), por lo que no he podido contestarte a como referenciar un campo en un formulario que está dentro de un formulario de navegación. Imagino que probaste la nomenclatura tradicional de considerar al formulario como un subformulario incrustado en otro principal (Forms! MiFormNav! Form! MiCampo). Parecería la forma lógica de referirse a un campo en este caso, pero nunca se sabe.
Solo corregir error en la PD de la respuesta anterior.
La referencia tradicional sería Forms! MiNombreFormNav! MicontrolNav. Form! MiCampo.
Cordiales saludos.
Pues era el tema de las comillas...
Simplemente poniendo la variable sin entrecomillar después del RunSQL, hace que funcione perfectamente.
Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas