Insertar registros desde Visual Basic

13/08/2012 - 13:05 por Toni | Informe spam
Buenos dias,

Intento insertar un registro en una tabla de Acces 2007 desde Visual Basic 6.3, con la siguiente instrucción, pero me da un error '424', requeriendo un objeto.

Dim sSQL As String
Dim bRevMant As Byte

sSQL = "(INSERT INTO Index (IdActivitat,NomActivitat,DataFoliExpedient,IdTipusPermis)VALUES ("
sSQL = sSQL & IdActivitat & ", "
sSQL = sSQL & NomActivitat & ", "
sSQL = sSQL & Forms![Manteniment01]![DataManteniment01] & ", "

If MarcReviAct = 0 Then
bRevMant = 40
Else
bRevMant = 46
End If

sSQL = sSQL & bRevMant & ") "

dbcon.Execute sSQL

El error debe estar en la última línea, he copiado el còdigo de webs que pueden hacer referència a otras versiones de Acces o de VB. Qué opinas?

Gràcias de antemano.
Toni

Preguntas similare

Leer las respuestas

#11 Emilio
16/08/2012 - 15:57 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

por consiguiente estás trabajando con Access no con VB6, que es otra cosa
diferente.

En cuanto a la fecha, desde código siempre has de utilizar formato mm/dd/yy
y si hace falta hh:nn:ss, por tanto a la hora de construir la sentencia SQL
formatea la fecha de ese modo.

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni" escribió en el mensaje de
noticias:

Buenos días,

Segun el menu de ayuda, la versión que tengo es VB 6.3, i Acces 2007.

El caso es que, si corro el programa sin introducir la fecha, me funciona,
pero si intento insertar este campo, me da el error 3075, debido a que
INSERT INTO devuelve la fecha en formato DD/MM/YYYY HH:MM:SS

Saludos!


Dim sSQL As String
Dim bRevMant As Byte

sSQL = "INSERT INTO Index (IdActivitat,
NomActivitat,IdTipusPermis,DataFoliExpedient) VALUES ("
' sSQL = "INSERT INTO Index (IdActivitat, NomActivitat,IdTipusPermis)
VALUES ("

sSQL = sSQL & IdActMant & ", '" & UltimNom & "', "

If MarcReviAct = 0 Then
bRevMant = 40
Else
bRevMant = 46
End If

sSQL = sSQL & bRevMant & ", "
' sSQL = sSQL & bRevMant & ")"
sSQL = sSQL & DataManteniment & ")"

DoCmd.RunSQL (sSQL)



On Tuesday, August 14, 2012 6:32:04 PM UTC+2, Emilio wrote:

ᅵImportante!: Colabora con el grupo.Contesta a este mensaje y dinos si
te

sirviᅵ o no la respuesta dada. Muchas gracias


Hola!

no me encaja lo que dices, VB6 no puede reconocer un formato Access 2007.



De cualquier modo, las fechas en Access siempre han de tratarse en formato

mm/dd/yy



Saludos a todos desde Huelva



Emilio [MS-MVP Access 2006/11]

http://www.mvp-access.com/foro

http://www.mvp-access.es/emilio

"Toni" escribiᅵ en el mensaje de

noticias:



Emilio, conseguᅵ algunos adelantos:



Dim sSQL As String

Dim bRevMant As Byte



sSQL = "INSERT INTO Index (IdActivitat,

NomActivitat,IdTipusPermis,DataFoliExpedient)VALUES("

sSQL = sSQL & IdActivitat & ", '" & UltimNom & "', "



If MarcReviAct = 0 Then

bRevMant = 40

Else

bRevMant = 46

End If



sSQL = sSQL & bRevMant & ", "

sSQL = sSQL & DataManteniment & ")"



DoCmd.RunSQL (sSQL)





Mi problema ahora es que, aunque el registro queda gravado, el campo con

formato fecha (DataFoliExpedient) me guarda un valor errᅵneo, supongo
que

debido a un problema de formatos.



Como puedo hacer para que en el campo 'DataFoliExpedient' me guarde el
valor

de la fecha que establece el campo independiente 'DataManteniment',

establecida en 'Fecha mediana'?



Muchas gracias

Toni







On Monday, August 13, 2012 4:01:34 PM UTC+2, Emilio wrote:


>

> ᅵImportante!: Colabora con el grupo.Contesta a este mensaje y dinos si
> te

>

> sirviᅵ o no la respuesta dada. Muchas gracias

>


>

> Hola!

>

> ᅵQuᅵ formato de archivo utilizas?, Si es accdb Visual Basic no lo

> reconoce,

>

> habᅵa muerto antes de nacer Access 2007.

>

>

>

> Saludos a todos desde Huelva

>

>

>

> Emilio [MS-MVP Access 2006/11]

>

> http://www.mvp-access.com/foro

>

> http://www.mvp-access.es/emilio

>

> "Toni" escribiᅵ en el mensaje de

>

> noticias:

>

>

>

> he leido alguna cosa sobre la necesidad de estar conectado a la base de

>

> datos, o a la tabla, no lo entendᅵ bien. En todo caso, explicito que
> estoy

>

> utilizando una aplicaciᅵn vinculada a una base de datos.

>

>

>

> Muchas gracias.

>

> Toni

>

>

>

>

>

> On Monday, August 13, 2012 1:05:57 PM UTC+2, Toni wrote:

>

> > Buenos dias,

>

> >

>

> >

>

> >

>

> > Intento insertar un registro en una tabla de Acces 2007 desde Visual

> > Basic

>

> > 6.3, con la siguiente instrucciᅵn, pero me da un error '424',

> > requeriendo

>

> > un objeto.

>

> >

>

> >

>

> >

>

> > Dim sSQL As String

>

> >

>

> > Dim bRevMant As Byte

>

> >

>

> >

>

> >

>

> > sSQL = "(INSERT INTO Index

>

> > (IdActivitat,NomActivitat,DataFoliExpedient,IdTipusPermis)VALUES ("

>

> >

>

> > sSQL = sSQL & IdActivitat & ", "

>

> >

>

> > sSQL = sSQL & NomActivitat & ", "

>

> >

>

> > sSQL = sSQL & Forms![Manteniment01]![DataManteniment01] & ", "

>

> >

>

> >

>

> >

>

> > If MarcReviAct = 0 Then

>

> >

>

> > bRevMant = 40

>

> >

>

> > Else

>

> >

>

> > bRevMant = 46

>

> >

>

> > End If

>

> >

>

> >

>

> >

>

> > sSQL = sSQL & bRevMant & ") "

>

> >

>

> >

>

> >

>

> > dbcon.Execute sSQL

>

> >

>

> >

>

> >

>

> > El error debe estar en la ᅵltima lᅵnea, he copiado el cᅵdigo de
> > webs que

>

> > pueden hacer referᅵncia a otras versiones de Acces o de VB. Quᅵ
> > opinas?

>

> >

>

> >

>

> >

>

> > Grᅵcias de antemano.

>

> >

>

> > Toni
Respuesta Responder a este mensaje
#12 Emilio
16/08/2012 - 15:59 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

reemplaza la comilla simple por dos, si fuera una comilla, doble lo mismo.
(utiliza para ello replace)

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni" escribió en el mensaje de
noticias:

Funcionó, gracias José Mª.

También, desearia preguntaros otro tema que tampoco se como resolver,
relacionado con la linea de comando siguiente:

sSQL = sSQL & IdActMant & ", '" & UltimNom & "', "

En esta línea entrecomillo con la comilla simple, y funciona para todos los
casos en los que el campo 'UltimNom' no contiene comillas, pero no para el
resto de las situaciones (por ejemplo, "McDonald's").

Que puedo hacer para estos casos?

Gracias

On Thursday, August 16, 2012 11:25:22 AM UTC+2, José Mª Fueyo wrote:
Hola

Con que digas la versión de Access, es suficiente.

Prueba a encerrar la fecha entre #

También puedes probar a obtener la sentencia sql en la ventana de
inmediato, y probarla en el editor de consultas.



Salu2


José Mª Fueyo

[MS MVP Access]
Respuesta Responder a este mensaje
#13 Toni
17/08/2012 - 09:12 | Informe spam
Emilio, buenos dias

No consigo aplicar lo que me explicas.

Utilizo el evento AfterUpdate para ejecutar el código. En este, el valor resultante de sSQL antes de DoCmd.RunSQL és el siguiente:

INSERT INTO Index (IdActivitat, NomActivitat,IdTipusPermis,DataFoliExpedient) VALUES (403, 'L'OUVERN', 46, #17/08/2012 8:47:20#)

Pero no lo acepta, dando un error 3075 de sintaxis.

Gracias de antemano.
Toni


On Thursday, August 16, 2012 3:59:12 PM UTC+2, Emilio wrote:

ᅵImportante!: Colabora con el grupo.Contesta a este mensaje y dinos si te

sirviᅵ o no la respuesta dada. Muchas gracias


Hola!



reemplaza la comilla simple por dos, si fuera una comilla, doble lo mismo.

(utiliza para ello replace)



Saludos a todos desde Huelva



Emilio [MS-MVP Access 2006/11]

http://www.mvp-access.com/foro

http://www.mvp-access.es/emilio

"Toni" escribiᅵ en el mensaje de

noticias:



Funcionᅵ, gracias Josᅵ Mᅵ.



Tambiᅵn, desearia preguntaros otro tema que tampoco se como resolver,

relacionado con la linea de comando siguiente:



sSQL = sSQL & IdActMant & ", '" & UltimNom & "', "



En esta lᅵnea entrecomillo con la comilla simple, y funciona para todos los

casos en los que el campo 'UltimNom' no contiene comillas, pero no para el

resto de las situaciones (por ejemplo, "McDonald's").



Que puedo hacer para estos casos?



Gracias



On Thursday, August 16, 2012 11:25:22 AM UTC+2, Josᅵ Mᅵ Fueyo wrote:

> Hola

>

> Con que digas la versiᅵn de Access, es suficiente.

>

> Prueba a encerrar la fecha entre #

>

> Tambiᅵn puedes probar a obtener la sentencia sql en la ventana de

> inmediato, y probarla en el editor de consultas.

>

>

>

> Salu2

>


>

> Josᅵ Mᅵ Fueyo

>

> [MS MVP Access]
Respuesta Responder a este mensaje
#14 Emilio
17/08/2012 - 15:20 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola!

como ya te he dicho las fecha en formato mm/dd/yy, es decir 08/17/12

Por otra parte cambia ese values por SELECT

Saludos a todos desde Huelva

Emilio [MS-MVP Access 2006/11]
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio
"Toni" escribió en el mensaje de
noticias:

Emilio, buenos dias

No consigo aplicar lo que me explicas.

Utilizo el evento AfterUpdate para ejecutar el código. En este, el valor
resultante de sSQL antes de DoCmd.RunSQL és el siguiente:

INSERT INTO Index (IdActivitat,
NomActivitat,IdTipusPermis,DataFoliExpedient) VALUES (403, 'L'OUVERN', 46,
#17/08/2012 8:47:20#)

Pero no lo acepta, dando un error 3075 de sintaxis.

Gracias de antemano.
Toni


On Thursday, August 16, 2012 3:59:12 PM UTC+2, Emilio wrote:

ᅵImportante!: Colabora con el grupo.Contesta a este mensaje y dinos si
te

sirviᅵ o no la respuesta dada. Muchas gracias


Hola!



reemplaza la comilla simple por dos, si fuera una comilla, doble lo mismo.

(utiliza para ello replace)



Saludos a todos desde Huelva



Emilio [MS-MVP Access 2006/11]

http://www.mvp-access.com/foro

http://www.mvp-access.es/emilio

"Toni" escribiᅵ en el mensaje de

noticias:



Funcionᅵ, gracias Josᅵ Mᅵ.



Tambiᅵn, desearia preguntaros otro tema que tampoco se como resolver,

relacionado con la linea de comando siguiente:



sSQL = sSQL & IdActMant & ", '" & UltimNom & "', "



En esta lᅵnea entrecomillo con la comilla simple, y funciona para todos
los

casos en los que el campo 'UltimNom' no contiene comillas, pero no para el

resto de las situaciones (por ejemplo, "McDonald's").



Que puedo hacer para estos casos?



Gracias



On Thursday, August 16, 2012 11:25:22 AM UTC+2, Josᅵ Mᅵ Fueyo wrote:

> Hola

>

> Con que digas la versiᅵn de Access, es suficiente.

>

> Prueba a encerrar la fecha entre #

>

> Tambiᅵn puedes probar a obtener la sentencia sql en la ventana de

> inmediato, y probarla en el editor de consultas.

>

>

>

> Salu2

>


>

> Josᅵ Mᅵ Fueyo

>

> [MS MVP Access]
Respuesta Responder a este mensaje
#15 Toni
20/08/2012 - 08:57 | Informe spam
Emilio,

Gracias a tu pàgina de concatenación de cadenas resolví el tema de las fechas, y también el de comillas dobles.

Buena semana!
Toni

On Friday, August 17, 2012 3:20:52 PM UTC+2, Emilio wrote:

ᅵImportante!: Colabora con el grupo.Contesta a este mensaje y dinos si te

sirviᅵ o no la respuesta dada. Muchas gracias


Hola!



como ya te he dicho las fecha en formato mm/dd/yy, es decir 08/17/12



Por otra parte cambia ese values por SELECT



Saludos a todos desde Huelva



Emilio [MS-MVP Access 2006/11]

http://www.mvp-access.com/foro

http://www.mvp-access.es/emilio

"Toni" escribiᅵ en el mensaje de

noticias:



Emilio, buenos dias



No consigo aplicar lo que me explicas.



Utilizo el evento AfterUpdate para ejecutar el cᅵdigo. En este, el valor

resultante de sSQL antes de DoCmd.RunSQL ᅵs el siguiente:



INSERT INTO Index (IdActivitat,

NomActivitat,IdTipusPermis,DataFoliExpedient) VALUES (403, 'L'OUVERN', 46,

#17/08/2012 8:47:20#)



Pero no lo acepta, dando un error 3075 de sintaxis.



Gracias de antemano.

Toni





On Thursday, August 16, 2012 3:59:12 PM UTC+2, Emilio wrote:


>

> ᅵImportante!: Colabora con el grupo.Contesta a este mensaje y dinos si

> te

>

> sirviᅵ o no la respuesta dada. Muchas gracias

>


>

> Hola!

>

>

>

> reemplaza la comilla simple por dos, si fuera una comilla, doble lo mismo.

>

> (utiliza para ello replace)

>

>

>

> Saludos a todos desde Huelva

>

>

>

> Emilio [MS-MVP Access 2006/11]

>

> http://www.mvp-access.com/foro

>

> http://www.mvp-access.es/emilio

>

> "Toni" escribiᅵ en el mensaje de

>

> noticias:

>

>

>

> Funcionᅵ, gracias Josᅵ Mᅵ.

>

>

>

> Tambiᅵn, desearia preguntaros otro tema que tampoco se como resolver,

>

> relacionado con la linea de comando siguiente:

>

>

>

> sSQL = sSQL & IdActMant & ", '" & UltimNom & "', "

>

>

>

> En esta lᅵnea entrecomillo con la comilla simple, y funciona para todos

> los

>

> casos en los que el campo 'UltimNom' no contiene comillas, pero no para el

>

> resto de las situaciones (por ejemplo, "McDonald's").

>

>

>

> Que puedo hacer para estos casos?

>

>

>

> Gracias

>

>

>

> On Thursday, August 16, 2012 11:25:22 AM UTC+2, Josᅵ Mᅵ Fueyo wrote:

>

> > Hola

>

> >

>

> > Con que digas la versiᅵn de Access, es suficiente.

>

> >

>

> > Prueba a encerrar la fecha entre #

>

> >

>

> > Tambiᅵn puedes probar a obtener la sentencia sql en la ventana de

>

> > inmediato, y probarla en el editor de consultas.

>

> >

>

> >

>

> >

>

> > Salu2

>

> >

>


>

> >

>

> > Josᅵ Mᅵ Fueyo

>

> >

>

> > [MS MVP Access]
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida