-1
votes

En essayant d'exécuter une instruction SQL de VBA à une base de données d'accès, obtenez une erreur de syntaxe avec l'instruction INSERT

Ceci est le code:

sqlStr = "INSERT INTO Students (ID, Last Name, First Name, E-mail Address, Student ID, Level, Date of Birth, Home Phone, Address, City, State/Province) VALUES ('" & ID.Value & "','" & lastName.Value & "','" & firstName.Value & "','" & email.Value & "','" & studentID.Value & "','" & birthday.Value & "','" & phone.Value & "','" & address.Value & "','" & city.Value & "','" & state.Value & "');"

DoCmd.RunSQL sqlStr


4 commentaires

L'argument de niveau est-il manquant dans les valeurs?


Oui c'était, c'était définitivement une partie du problème


Pourquoi marquer Excel?


Quelle est l'erreur? Vous insérez toutes les valeurs sous forme de texte qui, espérons-le, n'est pas correct.


5 Réponses :


0
votes

Essayez ceci:

sqlStr = "INSERT INTO Students (ID, [Last Name],  [First Name],  [E-mail Address], [Student ID], Level,  [Date of Birth],  [Home Phone], Address, City,  [State/Province]) VALUES ('" & ID.Value & "','" & lastName.Value & "','" & firstName.Value & "','" & email.Value & "','" & studentID.Value & "','" & birthday.Value & "','" & phone.Value & "','" & address.Value & "','" & city.Value & "','" & state.Value & "');"


1 commentaires

Essayé, obtenant toujours la même erreur



0
votes

Vous aurez besoin de supports carrés entourant des champs avec des espaces ou des caractères spéciaux, par exemple: xxx

également, à moins que tous vos champs sont des champs de texte, vous devez représenter correctement les valeurs. Selon le type de données - par exemple, si date de naissance est un champ de date (comme il devrait être), la valeur de date doit être fournie dans le format: xxx < / pré>


0 commentaires

0
votes

Les noms des champs avec des espaces doivent être fermés entre les crochets Sqaure et vérifier le type de données de vos valeurs. De plus, vous devez utiliser un seul devis (') dans votre varchar .values. XXX PRE>

ALORS P>

DoCmd.RunSQL (sql_qry)


0 commentaires

1
votes

Vous pouvez ouvrir la table et insérer l'enregistrement directement sans construire l'instruction SQL.

Dim rs as dao.recordset 
set rs = Currentdb.tabledefs("Students").openrecordset
Rs.addnew
    ' both rs(fieldname) and rs!fieldName would work
    Rs("ID") =  id 
    Rs![Last Name] = lastName
    rs![First Name] =
    rs![E-mail Address]=
    rs![Student ID]=
    rs!Level=
    rs![Date of Birth]=
    rs![Home Phone]=
    rs!Address=
    rs!City=
    rs![State/Province]=

Rs.update
Rs.close
Set rs = nothing


1 commentaires

... et des problèmes de mise en forme de SQL Injection et de données!



0
votes

Vous définissez 11 champs pour insérer, mais donner seulement 10 valeurs. Vous n'avez pas de valeur du niveau xxx


0 commentaires