Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Не очень понял Вашу логику, вот попробуйте вариант, но на Ваших данных всё равно нулю, так как указанных значений CODVR в Вашей базе нет
Открывал ваш ДБФ Экселом, брал существующие значения - нечто выбирает. Извините, пути подставил свои.
Код: Выделить весь код
Path = "D:\Delete\"
REESTRO = "REESTRO.DBF"

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("D:\Delete\Взрослые.txt", 8, True)         'Создает файл и записывает в него отфильтрованную информацию
Connect = "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" + Path  ' Подключение к базе *.DBF

Set RecSet = CreateObject("ADODB.Recordset")                    'ID по которому будут сопоставляться данные
        
Sql = "Select COUNT(*) AS VrachChild From " + REESTRO + " Where CODVR='0480004' and (KATEG=3 or KATEG=1)"   'Параметры поиска для каждого врача отдельно
RecSet.Open Sql, Connect
    file.WriteLine "Врач        | Акушер-гинеколог = " + CStr(RecSet.Fields("VrachChild"))    'Задает имя строки для записи
RecSet.Close

Sql = "Select COUNT(*) AS VrachChild From " + REESTRO + " Where CODVR='0380004' and (KATEG=3 or KATEG=1)"   'Параметры поиска для каждого врача отдельно
RecSet.Open Sql, Connect
    file.WriteLine "Врач        | Онколог = " + CStr(RecSet.Fields("VrachChild"))     'Задает имя строки для записи
RecSet.Close

Sql = "Select COUNT(*) AS VrachChild From " + REESTRO + " Where CODVR='0040039' and (KATEG=3 or KATEG=1)"   'Параметры поиска для каждого врача отдельно
RecSet.Open Sql, Connect
    file.WriteLine "Врач        | Участковый терапевт = " + CStr(RecSet.Fields("VrachChild"))     'Задает имя строки для записи
RecSet.Close
    
file.Close
Посмотрел на Ваш скрипт в прикреплённом файле. По видимому, более читаемо сделать вот так:
Код: Выделить весь код
Path = "D:\Delete\"
REESTRO = "REESTRO.DBF"

N = 3
ReDim mCode(N), mName(N)
i = 0
i = i + 1
mCode(i) = "'0480004'"
mName(i) = " Акушер-гинеколог = "
i = i + 1
mCode(i) = "'0380004'"
mName(i) = " Онколог = "
i = i + 1
mCode(i) = "'0040039'"
mName(i) = " Участковый терапевт = "

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("D:\Delete\Взрослые.txt", 8, True)         'Создает файл и записывает в него отфильтрованную информацию
Connect = "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" + Path  ' Подключение к базе *.DBF

Set RecSet = CreateObject("ADODB.Recordset")                    'ID по которому будут сопоставляться данные
        
For i = 1 To N
    Sql = "Select COUNT(*) AS VrachChild From " + REESTRO + " Where CODVR=" + mCode(i) + " and (KATEG=3 or KATEG=1)" 'Параметры поиска для каждого врача отдельно
    RecSet.Open Sql, Connect
        file.WriteLine mName(i) + CStr(RecSet.Fields("VrachChild"))    'Задает имя строки для записи
    RecSet.Close
Next
        
file.Close
Не знаю, зачем Вам это нужно, но ИМХО лучше эту задачу решить в Excel.
В клетках, например, столбцах А и B забить соответствие Код-Врач, макросом прочитать последовательно эти значения и в столбце C выдаватьть ответы

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 09-04-2011 в 11:11.


Отправлено: 20:37, 08-04-2011 | #2