flyingace
Messages postés5Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 octobre 2003
-
26 août 2003 à 17:23
flyingace
Messages postés5Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 octobre 2003
-
28 août 2003 à 17:09
Je désire faire une requete d'insertion dans une table d'une base access. Cette table comprends un champs qui est incrémenté de façon automatique.
Soit:
ID | Nom | Prénom | Age
-----------------------------------------------
Auto | Text | Text | Numérique
et:
Dim dbs as Database
set dbs = opendatabase("mabase.mdb")
requete = "INSERT INTO MA_TABLE (Nom, Prenom, Age) VALUES ('Minet', 'Gros', 42);"
dbs.execute requete
Ca ca marche nickel, mais moi j'aimerais recuper la valeur du champs ID que je viens d'insérer.
Bien sur je peux faire une requete "SELECT" derrière, mais je préférerais une méthode un peu plus soft.
Peut être que la façon dont je fait ma requete ne permet pas de faire cela, je suis preneur de toutes les solutions.
A voir également:
Un seul champ automatique est permis et il doit être indexé
flyingace
Messages postés5Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 octobre 2003 26 août 2003 à 17:27
-------------------------------
Réponse au message :
-------------------------------
Bonjour
> Je désire faire une requete d'insertion dans une table d'une base access. Cette table comprends un champs qui est incrémenté de façon automatique.
> Soit:
>
> ID | Nom | Prénom | Age
> -----------------------------------------------
> Auto | Text | Text | Numérique
>
> et:
>
> Dim dbs as Database
>
> set dbs = opendatabase("mabase.mdb")
> requete = "INSERT INTO MA_TABLE (Nom, Prenom, Age) VALUES ('Minet', 'Gros', 42);"
> dbs.execute requete
>
> Ca ca marche nickel, mais moi j'aimerais recuper la valeur du champs ID que je viens d'insérer.
>
> Bien sur je peux faire une requete "SELECT" derrière, mais je préférerais une méthode un peu plus soft.
>
> Peut être que la façon dont je fait ma requete ne permet pas de faire cela, je suis preneur de toutes les solutions.
flyingace
Messages postés5Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 octobre 2003 28 août 2003 à 17:09
-------------------------------
Réponse au message :
-------------------------------
> Je désire faire une requete d'insertion dans une table d'une base access. Cette table comprends un champs qui est incrémenté de façon automatique.
> Soit:
>
> ID | Nom | Prénom | Age
> -----------------------------------------------
> Auto | Text | Text | Numérique
>
> et:
>
> Dim dbs as Database
>
> set dbs = opendatabase("mabase.mdb")
> requete = "INSERT INTO MA_TABLE (Nom, Prenom, Age) VALUES ('Minet', 'Gros', 42);"
> dbs.execute requete
>
> Ca ca marche nickel, mais moi j'aimerais recuper la valeur du champs ID que je viens d'insérer.
>
> Bien sur je peux faire une requete "SELECT" derrière, mais je préférerais une méthode un peu plus soft.
>
> Peut être que la façon dont je fait ma requete ne permet pas de faire cela, je suis preneur de toutes les solutions.
J'ai trouvé une solution pas très élégante à mon goût mais qui marche:
On utilise pas "INSERT" mais une requete SELECT associé à un recordset et on utilise le recorset pour faire l'insertion. Et ensuite par l'intermédiaire du recordset on récupère la valeur du champs 'ID'.
Un code qui clarifie tout:
Dim dbs as Database
Dim rs as recordset
Dim requete as string
Dim ID as Long
set dbs = opendatabase("mabase.mdb")
requete = "SELECT * FROM MA_TABLE;"
Set rs = dbs.OpenRecordset(requete, dbOpenDynaset)
rs.AddNew
rs.fields("Nom") = "Minet"
rs.fields("Prenom") = "Gros"
rs.fields("Age") = 42
rs.Update
rs.MoveLast
ID = CLng(rs.fields("ID").Value)
J'espère pouvoir aider ainsi aussi d'autres personnes.