Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

INSERT INTO et qqs explications

2 réponses
Avatar
carlito9789
Bonjour,

j'ai cherché sur tous les sites que vous recommandez et trouvé pas mal
d'éléments de réponse, mais ça plante toujours un peu. J'ai déjà travaillé
pas mal sous mySQL + PHP, mais c'est la première fois que je travaille sous
Access et je dois dire que quelques trucs m'échappent (sans compter que la
syntaxe du VBA m'est nouvelle).

J'ai une table de plusieurs champs de type text (certains avec allow zero
length a yes, d'autres a no) et un champ index (avec la petite cle devant)
de type number et qui s'appelle num.
Sous mysql, je l'aurais déclaré comme "auto_increment" et lors de l'ajout
d'une ligne, mysql attribue le numéro suivant à cette enregistrement...

>>> quel est le paramètre ou le nom d'attribut à filer a ce champ pour faire
l'equivalent ?

j'ai ensuite créé un formulaire permettant de saisir un nouvel
enregistrement pour cette table. J'ai donc des zones de texte indépendantes
dans mon formulaire qui s'appelent "artiste, titre" etc
et dans le code associé, la requete suivante :

chSQL = "INSERT INTO INVENTAIRE_GALERIE ( TYPE, ARTISTE, DATE, TITRE,
TITRE_ENG, DIMENSION, DESCRIPTIF, DESCRIPTIF_ENG, ESTIMATION, NUMERO,
DATE_ACHAT, LIEU_ACHAT, PRIX_ACHAT, DATE_VENTE, LIEU_VENTE, PRIX_VENTE,
VRIC_A_VRAC, PHOTO) VALUES ( "
chSQL = chSQL & Me.TYPE & " , "
chSQL = chSQL & Me.ARTISTE & " , "
chSQL = chSQL & Me.DATE & " , "
chSQL = chSQL & Me.TITRE & " , "
chSQL = chSQL & Me.TITRE_ENG & " , "
chSQL = chSQL & Me.DIMENSION & " , "
chSQL = chSQL & Me.DESCRIPTIF & " , "
chSQL = chSQL & Me.DESCRIPTIF_ENG & " , "
chSQL = chSQL & Me.ESTIMATION & " , "
chSQL = chSQL & Me.NUMERO & " , "
chSQL = chSQL & Me.DATE_ACHAT & " , "
chSQL = chSQL & Me.LIEU_ACHAT & " , "
chSQL = chSQL & Me.PRIX_ACHAT & " , "
chSQL = chSQL & Me.DATE_VENTE & " , "
chSQL = chSQL & Me.LIEU_VENTE & " , "
chSQL = chSQL & Me.PRIX_VENTE & " , "
chSQL = chSQL & Me.VricaVrac & " , "
chSQL = chSQL & Me.PHOTO & " ); "

>>> et j'obtiens a chaque fois "erreur dans INSERT INTO"


>>>en mySQL j'aurais eu à le champ num dans insert into et ' ' dans la value
attachée. Qu'en est-il avec Access ?

>>>si certains champs du formulaire sont laissés vides, que fait Access ? Il
plante, ou il ajoute une chaine vide ?

>>>dans certains tutoriaux j'ai vu des [], est ce pour des champs optionels
?

>>>quelqu'un voit il mon erreur ? ;)

Merci d'avance
----------------------------------------------------------------------------
-----------------------------
PS
Autre question,
un de mes champs dans la table contient le chemin d'une image.
dans un état, j'affiche cette image.
Le problème c'est que quand je visualise cet état, Access charge toutes les
images référencées dans ma table.
Je voudrais ouvrir l'état en affichant que le premier enregistrement, et
qu'Access ne charge l'image 2 que si l'utilisateur appuie sur la fleche en
bas d'etat.
(sinon ca mange toute la memoire vive de la becane, et le temps de
chargement est tres long)

----------------------------------------------------------------------------
-------------------------------

Access 2002 et Windws XP

et pour y voir plus clair :

Private Sub OK_Click()
On Error GoTo Err_OK_Click
Dim db As Database
Dim chSQL As String
Dim rs As Recordset
Dim msgOK As String
msgOK = "TRANSACTION TERMINEE AVEC SUCCES"

'référence sur la base de données en cours
Set db = CurrentDb

'vérifier les données saisies
If IsNull(ARTISTE) Then
MsgBox ("entrez un nom d'artiste")
Exit Sub
End If

If IsNull(TITRE) Then
MsgBox ("entrez un titre")
Exit Sub
End If

If IsNull(DATE) Then
MsgBox ("entrez la date")
Exit Sub
End If

'ajouter l'enregistrement
'dans une même transaction
BeginTrans
chSQL = "INSERT INTO INVENTAIRE_GALERIE (NUM, TYPE, ARTISTE, DATE,
TITRE, TITRE_ENG, DIMENSION, DESCRIPTIF, DESCRIPTIF_ENG, ESTIMATION, NUMERO,
DATE_ACHAT, LIEU_ACHAT, PRIX_ACHAT, DATE_VENTE, LIEU_VENTE, PRIX_VENTE,
VRIC_A_VRAC, PHOTO) VALUES ( ' ', "
chSQL = chSQL & Me.TYPE & " , "
chSQL = chSQL & Me.ARTISTE & " , "
chSQL = chSQL & Me.DATE & " , "
chSQL = chSQL & Me.TITRE & " , "
chSQL = chSQL & Me.TITRE_ENG & " , "
chSQL = chSQL & Me.DIMENSION & " , "
chSQL = chSQL & Me.DESCRIPTIF & " , "
chSQL = chSQL & Me.DESCRIPTIF_ENG & " , "
chSQL = chSQL & Me.ESTIMATION & " , "
chSQL = chSQL & Me.NUMERO & " , "
chSQL = chSQL & Me.DATE_ACHAT & " , "
chSQL = chSQL & Me.LIEU_ACHAT & " , "
chSQL = chSQL & Me.PRIX_ACHAT & " , "
chSQL = chSQL & Me.DATE_VENTE & " , "
chSQL = chSQL & Me.LIEU_VENTE & " , "
chSQL = chSQL & Me.PRIX_VENTE & " , "
chSQL = chSQL & Me.VricaVrac & " , "
chSQL = chSQL & Me.PHOTO & " ); "
db.Execute (chSQL) ' , dbFailOnError
CommitTrans
MsgBox (msgOK)
db.Close
Set db = Nothing
Exit Sub

Err_OK_Click:
MsgBox Err.Description
Rollback
db.Close
Set db = Nothing
End Sub

2 réponses

Avatar
3stone
Salut,

"carlito9789"
| J'ai une table de plusieurs champs de type text (certains avec allow zero
| length a yes, d'autres a no) et un champ index (avec la petite cle devant)
| de type number et qui s'appelle num.
| Sous mysql, je l'aurais déclaré comme "auto_increment" et lors de l'ajout
| d'une ligne, mysql attribue le numéro suivant à cette enregistrement...
|
| >>> quel est le paramètre ou le nom d'attribut à filer a ce champ pour faire
| l'equivalent ?

Numérique > NuméroAuto > Clé primaire


| j'ai ensuite créé un formulaire permettant de saisir un nouvel
| enregistrement pour cette table. J'ai donc des zones de texte indépendantes
| dans mon formulaire qui s'appelent "artiste, titre" etc
| et dans le code associé, la requete suivante :
|
| chSQL = "INSERT INTO INVENTAIRE_GALERIE ( TYPE, ARTISTE, DATE, TITRE,
| TITRE_ENG, DIMENSION, DESCRIPTIF, DESCRIPTIF_ENG, ESTIMATION, NUMERO,
| DATE_ACHAT, LIEU_ACHAT, PRIX_ACHAT, DATE_VENTE, LIEU_VENTE, PRIX_VENTE,
| VRIC_A_VRAC, PHOTO) VALUES ( "
| chSQL = chSQL & Me.TYPE & " , "
| chSQL = chSQL & Me.ARTISTE & " , "
| chSQL = chSQL & Me.DATE & " , "
[...]
| >>> et j'obtiens a chaque fois "erreur dans INSERT INTO"

Les champs texte sont à "entourer" de simples quotes (')
Ne pas utiliser comme nom de champ "Date" qui est une fonction

| >>>en mySQL j'aurais eu à le champ num dans insert into et ' ' dans la value
| attachée. Qu'en est-il avec Access ?

Le champ primaire NumAuto n'est pas à renseigner, car géré par Access.

| >>>si certains champs du formulaire sont laissés vides, que fait Access ? Il
| plante, ou il ajoute une chaine vide ?

Il ajoute la valeur Null qui n'est pas chaîne vide (NULL = Inconnu, non attribué)

| >>>dans certains tutoriaux j'ai vu des [], est ce pour des champs optionels ?

Le nom des objets qui contiennent des espaces ou autres caractères folklorique
doivent être entouré de crochets... [Numéro client] [Formulaire de saisie]
C'est pour cela que nous conseillons l'utilisation de la méthode "en chameau"...
ainsi: NumeroClient ou FormulaireDeSaisie


--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
Avatar
carlito9789
Super 3stone, merci beaucoup pour ton aide, précise, rapide et efficace ;).
Ca a marche, enfin !

"3stone" a écrit dans le message de news:
3fa1a9c3$0$20334$
Salut,

"carlito9789"
| J'ai une table de plusieurs champs de type text (certains avec allow
zero

| length a yes, d'autres a no) et un champ index (avec la petite cle
devant)

| de type number et qui s'appelle num.
| Sous mysql, je l'aurais déclaré comme "auto_increment" et lors de
l'ajout

| d'une ligne, mysql attribue le numéro suivant à cette enregistrement...
|
| >>> quel est le paramètre ou le nom d'attribut à filer a ce champ pour
faire

| l'equivalent ?

Numérique > NuméroAuto > Clé primaire


| j'ai ensuite créé un formulaire permettant de saisir un nouvel
| enregistrement pour cette table. J'ai donc des zones de texte
indépendantes

| dans mon formulaire qui s'appelent "artiste, titre" etc
| et dans le code associé, la requete suivante :
|
| chSQL = "INSERT INTO INVENTAIRE_GALERIE ( TYPE, ARTISTE, DATE,
TITRE,

| TITRE_ENG, DIMENSION, DESCRIPTIF, DESCRIPTIF_ENG, ESTIMATION, NUMERO,
| DATE_ACHAT, LIEU_ACHAT, PRIX_ACHAT, DATE_VENTE, LIEU_VENTE, PRIX_VENTE,
| VRIC_A_VRAC, PHOTO) VALUES ( "
| chSQL = chSQL & Me.TYPE & " , "
| chSQL = chSQL & Me.ARTISTE & " , "
| chSQL = chSQL & Me.DATE & " , "
[...]
| >>> et j'obtiens a chaque fois "erreur dans INSERT INTO"

Les champs texte sont à "entourer" de simples quotes (')
Ne pas utiliser comme nom de champ "Date" qui est une fonction

| >>>en mySQL j'aurais eu à le champ num dans insert into et ' ' dans la
value

| attachée. Qu'en est-il avec Access ?

Le champ primaire NumAuto n'est pas à renseigner, car géré par Access.

| >>>si certains champs du formulaire sont laissés vides, que fait Access
? Il

| plante, ou il ajoute une chaine vide ?

Il ajoute la valeur Null qui n'est pas chaîne vide (NULL = Inconnu, non
attribué)


| >>>dans certains tutoriaux j'ai vu des [], est ce pour des champs
optionels ?


Le nom des objets qui contiennent des espaces ou autres caractères
folklorique

doivent être entouré de crochets... [Numéro client] [Formulaire de
saisie]

C'est pour cela que nous conseillons l'utilisation de la méthode "en
chameau"...

ainsi: NumeroClient ou FormulaireDeSaisie


--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------