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

#6 Toni
14/08/2012 - 14:09 | Informe spam
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
#7 Emilio
14/08/2012 - 18:32 | Informe spam
¡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
#8 Toni
16/08/2012 - 09:07 | Informe spam
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
#9 José Mª Fueyo
16/08/2012 - 11:25 | Informe spam
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
#10 Toni
16/08/2012 - 14:55 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida