2010-06-30 6 views
0

J'essaie de créer une instruction SQL, mais j'ai besoin de l'utilisation d'une variable VB. Le problème est que je continue d'obtenir une erreur sur un trop petit nombre de paramètres lorsque j'essaie de mettre simplement la variable. Existe-t-il un type de format que je dois utiliser pour ajouter une variable VB dans une instruction SQL?Utiliser une variable VB dans une instruction SQL

Set rs = CurrentDb.OpenRecordset("SELECT StartTime " & _ 
      "FROM tblLunchTime " & _ 
      "WHERE TimeID = (SELECT max(TimeID-count) FROM tblLunchTime);") 

La variable dans cette situation est 'count'.

Répondre

1

concaténer la variable comme ceci:

Set rs = CurrentDb.OpenRecordset("SELECT StartTime " & _ 
      "FROM tblLunchTime " & _ 
      "WHERE TimeID = (SELECT max(TimeID-" & count & ") FROM tblLunchTime);") 
+1

Screams mauvaise pratique. Injection SQL n'importe qui ??? – StingyJack

+0

Détendez-vous un peu. VB est tapé. Comment voulez-vous injecter SQL dans un int? – renick

+0

C'est probablement le modèle qui est répété ailleurs, avec des chaînes. – StingyJack

1

Eh bien ... en utilisant sql non-paramétrées comme vous voulez est généralement une très mauvaise idée. Il y a many articles sur la façon de paramétrer une requête SQL ou d'utiliser des procédures stockées pour VB (6 et .NET).

+0

N'avez pas vraiment le choix. – BioXhazard

0

Vous devez concaténer:

Set rs = CurrentDb.OpenRecordset("SELECT StartTime " & _ 
      "FROM tblLunchTime " & _ 
      "WHERE TimeID = (SELECT max(TimeID-" & count & ") FROM tblLunchTime);") 
Questions connexes