2012-11-02 2 views
0

я получаю эту ошибку:SQL Query & VBA ошибка

BOF or EOF set tu True, or the current record has been deleted. The requested 
operation requires a current record. 

Мой код:

MyQuery = "Select Destinataire, SUM(" & Entete & ") AS NombreTotal FROM [Feuil1$] " _ 
     & "WHERE [DateMad] Between #" _ 
     & Format(date_deb, "yyyy/mm/dd") _ 
     & "# And #" & Format(date_fin, "yyyy/mm/dd") & "#" & Query3 & " Group By Destinataire" 

     objRecordSet.Open MyQuery, objConnection, adOpenStatic, adLockOptimistic 

     Feuil3.Cells(1, Col) = Entete 
     Feuil3.Cells(strLine, 2) = Entete2 
     Feuil3.Cells(2, Col).Value = objRecordSet.Fields("NombreTotal").Value 

я получаю ошибку на последней строке

Feuil3.Cells(2, Col).Value = objRecordSet.Fields("NombreTotal").Value 

почему он спрашивает я для BOF или EOF, так как я спрашиваю SUM? также как получить этот запрос для работы PLZ? Я не могу дышать этой отладкой

+0

Debug.Print MyQuery дать следующее: Выберите Destinataire, SUM (NbCompteurElecNR) AS NombreTotal FROM [Feuil1 $] WHERE [DateMad] Между # 2012/11/21 # и # 2012/11/26 # И [Destinataire] = 'REL12' Group By Destinataire – Phaoris

+0

Какая ошибка вы получаете? –

+0

Я продолжаю получать BOF или EOF set tu True, или текущая запись была удалена. Запрошенная операция требует текущей записи. – Phaoris

ответ

0

Если вы фильтруете определенные данные (Destinataire = 'REL12'), и вы включаете это поле в свой запрос вместе с суммой, если нет записей, вместо того, чтобы получать одну запись с суммой 0, вы не получите никаких данных.

Если вы получаете сумму для определенного Destinataire, вам не нужно включать это поле в свой выбор или в свою группу. Вы уже фильтруете только один Destinataire.

MyQuery = "Select SUM(" & Entete & ") AS NombreTotal FROM [Feuil1$] " _ 
    & "WHERE [DateMad] Between #" _ 
    & Format(date_deb, "yyyy/mm/dd") _ 
    & "# And #" & Format(date_fin, "yyyy/mm/dd") & "#" & Query3