2010-06-01 6 views
0

J'utilise le code ci-dessous pour appeler une requête dans Access VBAerreur SQL modification enregistrement existant avec Insérer

strSQL = "INSERT INTO tblLoanDetails ([ServerName]) VALUES ('Test') WHERE [ID]=3" 
Call CurrentDb.Execute(strSQL) 

Je veux changer le champ ServerName.

Je reçois une erreur d'exécution de «3067: requête doit contenir au moins une table ou requête.

La chaîne d'instruction d'insertion ressemble à ceci. (Jetez le var dans une zone de texte):

INSERT INTO tblLoanDetails ([ServerName]) VALUES ('Test') WHERE [ID]=3 

J'ai essayé d'ajouter un point-virgule à la fin. Je me suis assuré que ma table s'appelle tblLoanDetails et que mes noms de colonnes sont ServerName et ID.

Répondre

1

En supposant que vous souhaitiez ajouter un nouvel enregistrement , vous ne devriez pas avoir de clause WHERE dans ce cas, puisqu'il n'y a aucun enregistrement à examiner. Pour ce faire:

INSERT INTO tblLoanDetails (ServerName) VALUES ('Test') 

Si au contraire vous souhaitez modifier un enregistrement existant, faites ceci:

UPDATE tblLoanDetails set ServerName = 'Test' where ID = 3 
+0

Voulez-vous dire que je devrais être mise à jour au lieu d'insérer? –

+0

Utilisez INSERT pour ajouter un nouvel enregistrement et UPDATE pour modifier un enregistrement existant. – RedFilter

+0

Donc, si je voulais changer le champ ServerName d'autre chose, je ne devrais pas insérer? –