xilit
08-04-2011, 15:08
Добрый день.
В этой теме http://forum.oszone.net/thread-203670.html megaloman подсказал мне как в базе *.DBF по необходимым параметрам определить количество строк.
Я немного переделал код под свою ситуацию.
Вот что получилось:
Path = "h:\Работа\Документы\VBS\"
REESTRO = "REESTRO.DBF"
Connect = "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" + Path ' Подключение к базе *.DBF
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\Взрослые.txt", 8, true) 'Создает файл и записывает в него отфильтрованную информацию
Set RecSet1 = WScript.CreateObject("ADODB.Recordset") 'ID по которому будут сопоставляться данные
Set RecSet2 = WScript.CreateObject("ADODB.Recordset")
Set RecSet3 = WScript.CreateObject("ADODB.Recordset")
Set RecSet101 = WScript.CreateObject("ADODB.Recordset")
Set RecSet102 = WScript.CreateObject("ADODB.Recordset")
Set RecSet103 = WScript.CreateObject("ADODB.Recordset")
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=3 and CODVR='0480004'" 'Параметры поиска для каждого врача отдельно
RecSet1.Open SQL , Connect
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=1 and CODVR='0480004'" 'Параметры поиска для каждого врача отдельно
RecSet101.Open SQL , Connect
file.Write("Врач | Акушер-гинеколог = ") 'Задает имя строки для записи
file.WriteLine(RecSet1.Fields("VrachChild")) + (RecSet101.Fields("VrachChild")) 'Записывает пересчитанные данные на против соответствующего врача и переводит каретку
RecSet1.Close()
RecSet101.Close()
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=3 and CODVR='0380004'"
RecSet2.Open SQL , Connect
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=1 and CODVR='0380004'"
RecSet102.Open SQL , Connect
file.Write("Врач | Онколог = ")
file.WriteLine(RecSet2.Fields("VrachChild")) + (RecSet102.Fields("VrachChild"))
RecSet2.Close()
RecSet102.Close()
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=3 and CODVR='0040039'"
RecSet3.Open SQL , Connect
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=1 and CODVR='0040039'"
RecSet103.Open SQL , Connect
file.Write("Врач | Участковый терапевт = ")
file.WriteLine(RecSet3.Fields("VrachChild")) + (RecSet103.Fields("VrachChild"))
RecSet3.Close()
RecSet103.Close()
Так вот таких врачей у меня 70 человек.
После того как их всех забил в скрипт, во время выполнения выходит ошибка:
[Microsoft][Драйвер ODBC dBase] Запущено слишком много задач-клиентов.
Я думал что добавление RecSet*.Close() исправит задачу, но нет. Не получилось.
Подскажите пожалуйста где я ошибся.
Исходники и образец таблицы в приложенном архиве.
В этой теме http://forum.oszone.net/thread-203670.html megaloman подсказал мне как в базе *.DBF по необходимым параметрам определить количество строк.
Я немного переделал код под свою ситуацию.
Вот что получилось:
Path = "h:\Работа\Документы\VBS\"
REESTRO = "REESTRO.DBF"
Connect = "Driver={Microsoft dBase Driver (*.dbf)};DefaultDir=" + Path ' Подключение к базе *.DBF
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\Взрослые.txt", 8, true) 'Создает файл и записывает в него отфильтрованную информацию
Set RecSet1 = WScript.CreateObject("ADODB.Recordset") 'ID по которому будут сопоставляться данные
Set RecSet2 = WScript.CreateObject("ADODB.Recordset")
Set RecSet3 = WScript.CreateObject("ADODB.Recordset")
Set RecSet101 = WScript.CreateObject("ADODB.Recordset")
Set RecSet102 = WScript.CreateObject("ADODB.Recordset")
Set RecSet103 = WScript.CreateObject("ADODB.Recordset")
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=3 and CODVR='0480004'" 'Параметры поиска для каждого врача отдельно
RecSet1.Open SQL , Connect
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=1 and CODVR='0480004'" 'Параметры поиска для каждого врача отдельно
RecSet101.Open SQL , Connect
file.Write("Врач | Акушер-гинеколог = ") 'Задает имя строки для записи
file.WriteLine(RecSet1.Fields("VrachChild")) + (RecSet101.Fields("VrachChild")) 'Записывает пересчитанные данные на против соответствующего врача и переводит каретку
RecSet1.Close()
RecSet101.Close()
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=3 and CODVR='0380004'"
RecSet2.Open SQL , Connect
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=1 and CODVR='0380004'"
RecSet102.Open SQL , Connect
file.Write("Врач | Онколог = ")
file.WriteLine(RecSet2.Fields("VrachChild")) + (RecSet102.Fields("VrachChild"))
RecSet2.Close()
RecSet102.Close()
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=3 and CODVR='0040039'"
RecSet3.Open SQL , Connect
SQL = "Select COUNT(*) AS VrachChild From " +REESTRO+ " Where KATEG=1 and CODVR='0040039'"
RecSet103.Open SQL , Connect
file.Write("Врач | Участковый терапевт = ")
file.WriteLine(RecSet3.Fields("VrachChild")) + (RecSet103.Fields("VrachChild"))
RecSet3.Close()
RecSet103.Close()
Так вот таких врачей у меня 70 человек.
После того как их всех забил в скрипт, во время выполнения выходит ошибка:
[Microsoft][Драйвер ODBC dBase] Запущено слишком много задач-клиентов.
Я думал что добавление RecSet*.Close() исправит задачу, но нет. Не получилось.
Подскажите пожалуйста где я ошибся.
Исходники и образец таблицы в приложенном архиве.