{Access} Utilisation de requête Update sous vb
Resuelto
jph71390
-
moiced59 Mensajes publicados 1161 Estado Miembro -
moiced59 Mensajes publicados 1161 Estado Miembro -
Hola,
Estoy en Access desde una semana y estoy con un pequeño proyecto y me estoy enfrentando a una dificultad desde hace 2 días. Tengo una tabla prêts (con tres campos: id-prêt, id-utilisateur, id-tiers, montant y date) y un formulario que me permite modificar estos distintos campos.
Entonces, al principio quería hacer una lista desplegable de búsqueda que muestre los distintos campos; el usuario elige uno de ellos, esta lista devuelve el id-prêt, ahí voy, ya lo tengo. A
Después de mi formulario tengo otros 4 campos que me permiten introducir los nuevos valores para id-utilisateur, id-tiers, montant y date y ahí quisiera que el usuario solo tenga que hacer clic en el botón modificar para que los campos se modifiquen automáticamente y ahí es donde me estoy dando vueltas.
aquí están mis diferentes intentos:
1)
Dim req As String
Dim rs As Recordset
Dim mabase As Database
Set mabase = CurrentDb()
' Ejecución de la consulta
req = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "'"
Set rs = mabase.OpenRecordset(req)
2)
Dim sdl As String
Dim rs As DAO.Recordset
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "';"
Set rs = CurrentDb.OpenRecordset(sql)
3)
Set db = CurrentDb
Set req = db.OpenRecordset("PRÊT")
req.Edit
req("IDENTIFIANT_TIERS") = txtNomTier
req("IDENTIFIANT_UTILISATEUR") = ValeurNumUtilisateur
req("MONTANT_PRÊT") = txtMontantAvoir
req("DATE_PRÊT") = txtDateAvoir
req.Update
req.Close
Avec cette dernière méthode j’arrive à faire une mise à jour mais sur la première ligne de ma table je n’arrive pas à lui dire d’aller à l’id-prêt qui est retourné par la liste de recherche
Cordialement merci de votre aide
jph
Estoy en Access desde una semana y estoy con un pequeño proyecto y me estoy enfrentando a una dificultad desde hace 2 días. Tengo una tabla prêts (con tres campos: id-prêt, id-utilisateur, id-tiers, montant y date) y un formulario que me permite modificar estos distintos campos.
Entonces, al principio quería hacer una lista desplegable de búsqueda que muestre los distintos campos; el usuario elige uno de ellos, esta lista devuelve el id-prêt, ahí voy, ya lo tengo. A
Después de mi formulario tengo otros 4 campos que me permiten introducir los nuevos valores para id-utilisateur, id-tiers, montant y date y ahí quisiera que el usuario solo tenga que hacer clic en el botón modificar para que los campos se modifiquen automáticamente y ahí es donde me estoy dando vueltas.
aquí están mis diferentes intentos:
1)
Dim req As String
Dim rs As Recordset
Dim mabase As Database
Set mabase = CurrentDb()
' Ejecución de la consulta
req = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "'"
Set rs = mabase.OpenRecordset(req)
2)
Dim sdl As String
Dim rs As DAO.Recordset
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "';"
Set rs = CurrentDb.OpenRecordset(sql)
3)
Set db = CurrentDb
Set req = db.OpenRecordset("PRÊT")
req.Edit
req("IDENTIFIANT_TIERS") = txtNomTier
req("IDENTIFIANT_UTILISATEUR") = ValeurNumUtilisateur
req("MONTANT_PRÊT") = txtMontantAvoir
req("DATE_PRÊT") = txtDateAvoir
req.Update
req.Close
Avec cette dernière méthode j’arrive à faire une mise à jour mais sur la première ligne de ma table je n’arrive pas à lui dire d’aller à l’id-prêt qui est retourné par la liste de recherche
Cordialement merci de votre aide
jph
Configuration: Windows XP Firefox 3.5.6
13 respuestas
Hola
No conozco Access, pero te puedo garantizar que tus consultas de actualización no te devuelven un recordset (por lo que hay pocas probabilidades de que OpenRecordset logre ejecutar una actualización).
debe existir una instrucción tipo ExecuteCommand para hacer que se ejecuten tus consultas de actualización.
No conozco Access, pero te puedo garantizar que tus consultas de actualización no te devuelven un recordset (por lo que hay pocas probabilidades de que OpenRecordset logre ejecutar una actualización).
debe existir una instrucción tipo ExecuteCommand para hacer que se ejecuten tus consultas de actualización.
Hola,
ok intentaré esto hacia el mediodía porque ahora mismo no estoy en mi PC y no tengo acceso a mi archivo, les mantendré informados y gracias de nuevo
++
ok intentaré esto hacia el mediodía porque ahora mismo no estoy en mi PC y no tengo acceso a mi archivo, les mantendré informados y gracias de nuevo
++
Hola, vengo a probar con esto y esto es lo que obtengo
Dim sdl As String
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "';"
DoCmd.RunSQL (sql)
et il m a mit une erreur qui est :
type de de donnée incompatible dans l'expression du critère
Voilà désolé mais je ne comprends pas, quelqu'un peut m'aider s'il vous plaît merci
++
Dim sdl As String
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "';"
DoCmd.RunSQL (sql)
et il m a mit une erreur qui est :
type de de donnée incompatible dans l'expression du critère
Voilà désolé mais je ne comprends pas, quelqu'un peut m'aider s'il vous plaît merci
++
ya tu dim no es bueno:
dim sql como cadena
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = [txtNomTier], PRÊT.IDENTIFIANT_UTILISATEUR =ValeurNumUtilisateur , PRÊT.MONTANT_PRÊT =txtMontantAvoir, PRÊT.DATE_PRÊT = txtDateAvoir Where PRÊT.IDENTIFIANT_PRÊT = txtNumAvoir"
intenta a ver
no entiendo por qué concatenas todo; ¿ejecutas tu consulta desde vb? supongo que la ejecutas desde un botón situado en el formulario, así que no hace falta concatenar; tal vez habrá que ponerlos entre [ ]
dim sql como cadena
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = [txtNomTier], PRÊT.IDENTIFIANT_UTILISATEUR =ValeurNumUtilisateur , PRÊT.MONTANT_PRÊT =txtMontantAvoir, PRÊT.DATE_PRÊT = txtDateAvoir Where PRÊT.IDENTIFIANT_PRÊT = txtNumAvoir"
intenta a ver
no entiendo por qué concatenas todo; ¿ejecutas tu consulta desde vb? supongo que la ejecutas desde un botón situado en el formulario, así que no hace falta concatenar; tal vez habrá que ponerlos entre [ ]
Sí, lo siento; debí aclarar que todo lo que txt...... son campos presentes en mi formulario y ValeurNumUtilisateur es una variable global que contiene mi id de usuario, porque para acceder a este formulario hay que autenticarse y guardo el número en esa variable, blux.
Voy a probar esa sintaxis de inmediato, gracias moiced59
++
Voy a probar esa sintaxis de inmediato, gracias moiced59
++
Entonces es genial, gracias mucho, sql as string
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = [txtNomTier], PRÊT.IDENTIFIANT_UTILISATEUR =ValeurNumUtilisateur , PRÊT.MONTANT_PRÊT =txtMontantAvoir, PRÊT.DATE_PRÊT = txtDateAvoir Where PRÊT.IDENTIFIANT_PRÊT = txtNumAvoir"
por cierto, solo una pequeña cosa más, ¿podrías explicarme o darme la dirección de un tutorial que explique exactamente cómo funciona, por qué hay que poner corchetes o nada o comillas y en qué caso también ^^ y además, cómo quitar el mensaje de alerta que aparece: "Vous allez mettre à jour une ligne(s). dès que vous cliquerez sur oui, il vous sera impossible de ......"
de nuevo gracias
++
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = [txtNomTier], PRÊT.IDENTIFIANT_UTILISATEUR =ValeurNumUtilisateur , PRÊT.MONTANT_PRÊT =txtMontantAvoir, PRÊT.DATE_PRÊT = txtDateAvoir Where PRÊT.IDENTIFIANT_PRÊT = txtNumAvoir"
por cierto, solo una pequeña cosa más, ¿podrías explicarme o darme la dirección de un tutorial que explique exactamente cómo funciona, por qué hay que poner corchetes o nada o comillas y en qué caso también ^^ y además, cómo quitar el mensaje de alerta que aparece: "Vous allez mettre à jour une ligne(s). dès que vous cliquerez sur oui, il vous sera impossible de ......"
de nuevo gracias
++
Se ponen [] cuando se hace referencia a un nombre que tiene un espacio en su interior, para evitar que Access piense que es un separador...
[campo 1] y no campo 1
Se ponen entre comillas (la comilla simple, la tecla 4 del teclado) los datos que son de tipo cadena. Los numéricos no necesitan eso, y para las fechas, hay que poner # al principio y al final...
--
A+ Blux
[campo 1] y no campo 1
Se ponen entre comillas (la comilla simple, la tecla 4 del teclado) los datos que son de tipo cadena. Los numéricos no necesitan eso, y para las fechas, hay que poner # al principio y al final...
SELECT * FROM [table 1] WHERE champ1 = 'toto' AND [champ suivant] = 12 AND champ_date = #01/01/2010#;
--
A+ Blux
"Los imbéciles, eso se atreven a hacer de todo. Es incluso así como se reconocen"
entonces de corchetes: referencia a un campo del formulario
nada : referencia a una variable
"" : concadena texto plano ejemplo select * from persona where nom = pierre !!! where nom = ""pierre""
eliminar mensaje de alerta :
al inicio del código vb:
docmd.setwarnings false
al final del código
docmd.setwarnings true
valordijo
nada : referencia a una variable
"" : concadena texto plano ejemplo select * from persona where nom = pierre !!! where nom = ""pierre""
eliminar mensaje de alerta :
al inicio del código vb:
docmd.setwarnings false
al final del código
docmd.setwarnings true
valordijo
OK gracias por tu ayuda
te deseo que pases unas buenas fiestas de fin de año y una buena jornada y gracias de nuevo
++
te deseo que pases unas buenas fiestas de fin de año y una buena jornada y gracias de nuevo
++