Цикл VBA while с использованием оператора SQL в качестве - PullRequest
0 голосов
/ 28 октября 2010

Я пишу некоторый код за некоторыми электронными таблицами, и мне нужно пройтись по некоторому коду, например, получить данные из базы данных, сделать некоторые формулы и переместить данные на новый лист. Мой код для получения данных из базы данных получает все значения в нескольких столбцах, где данные не были сообщены и имеют одно и то же имя файла (данные поступают из файла), у меня есть поле, в котором указано, является ли или нет о нем сообщается простым «Y» или «N», а также в поле, содержащем имя файла, из которого оно получено.

Так что мне нужно какое-то время, пока "WHILE" есть данные, о которых не сообщалось, для остальной части моего кода (это включает в себя мой первый оператор SQL, который я сказал, так как это получает данные, которые не были сообщены из каждого отдельного имени файла) ).

Я пытался заставить это работать несколько дней, но просто не мог понять, как, поэтому любая помощь будет очень благодарна.

Обновление:

База данных имеет сущность с именем datareported, может быть либо «N», либо «Y», а также файл данных, который является именем, из которого поступили данные.

Итак,

WHILE datareported = 'N' THEN
"SELECT (the data rows I want)
FROM tbldata
WHERE datareported='N' and datadatfile =
(SELECT min(datadatfile)
    FROM tbldata WHERE datareported='N')"

Это означает, что я перебираю оставшуюся часть моего кода, пока есть данные, о которых не было сообщено, и только ввожу данные с тем же именем (из файла данных), чтобы код мог быть запущен на этих данных.

Это в основном то, что я хочу сделать, и это почти то, что я пробовал. Я пробовал несколько других вещей и обычно получаю возвращение несоответствия типов.

Приветствия

Sam

1 Ответ

0 голосов
/ 03 ноября 2010

Для решения требуется дополнительная информация, но это может помочь вам в правильном направлении ...

'ws1 = worksheet object...
bC = true
cnt1 = 2 ' starting row
Do While bC

If ws1.cells(cnt1, 1) = "N" Then
'Run your SQL here
Else
'Already reported...
End If
cnt1 = cnt1 + 1
If 'you hit the last row on your worksheet set bC = False to exit loop      
Loop

Пропущено обновление ... это не поможет, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...