2010-01-20 7 views
0

J'ai une table nommée OT Hours dont la colonne est la suivante: EmpId, Date, Hours.Utilisation de la boucle dans une requête Access

J'ai besoin d'insérer une valeur constante dans la colonne des heures pendant 12 mois avant la date actuelle pour 6 employés. Puis-je utiliser une boucle for dans la requête? Si oui, veuillez me donner un exemple. A partir de maintenant, je peux le faire en VBA comme suit:

Dim j As Integer 
    For j = -11 To 0 
    DoCmd.RunSQL "INSERT INTO tblOTHours (employeeNumber, theDate, HoursType, Position, hoursQuantity) VALUES ('" & S.sanitize(txtEmployeeNumber) & "',DateAdd('m'," & j & ",Format(Now(),'mm/dd/yyyy')),'OT1','" & cmb_position.value & "'," & Round(Val(rs("Avg"))/12, 1) & ")" 
    Next 

Note: J'utilise MS Access. Puis-je faire cette fonction dans la requête elle-même?

Répondre

1

Il peut être utile d'avoir une table de nombres qui contient des nombres entiers de 1 ou 0 à un nombre suffisamment élevé. Votre requête pourrait profiter de cette table comme suit:

"INSERT INTO tblOTHours (theDate, employeeNumber, HoursType, [Position], hoursQuantity) " _ 
& "SELECT DateAdd('m',Number,Date()), '" & S.sanitize(txtEmployeeNumber) & "','OT1','" _ 
& cmb_position.value & "'," & Round(Val(rs("Avg"))/12, 1) _ 
& " FROM Numbers " _ 
& "WHERE Numbers.Number<11" 
Questions connexes