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:
Mostrar la cita
#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:
Mostrar la cita
#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:
Mostrar la cita
#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]
#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:
Mostrar la cita
Ads by Google
Search Busqueda sugerida