|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Запущено слишком много задач-клиентов |
|
VBS/WSH/JS - Запущено слишком много задач-клиентов
|
Новый участник Сообщения: 9 |
Профиль | Отправить PM | Цитировать
Добрый день.
В этой теме 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() После того как их всех забил в скрипт, во время выполнения выходит ошибка: [Microsoft][Драйвер ODBC dBase] Запущено слишком много задач-клиентов. Я думал что добавление RecSet*.Close() исправит задачу, но нет. Не получилось. Подскажите пожалуйста где я ошибся. Исходники и образец таблицы в приложенном архиве. |
|
Отправлено: 15:08, 08-04-2011 |
Ветеран Сообщения: 2726
|
Профиль | Отправить 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 В клетках, например, столбцах А и B забить соответствие Код-Врач, макросом прочитать последовательно эти значения и в столбце C выдаватьть ответы |
------- Последний раз редактировалось megaloman, 09-04-2011 в 11:11. Отправлено: 20:37, 08-04-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Вот еще вариант
Public file, Connect, RecSet, REESTRO 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 Set RecSet = CreateObject("ADODB.Recordset") dbfSelect "'0480004'", " Акушер-гинеколог = " dbfSelect "'0380004'", " Онколог = " dbfSelect "'0040039'", " Участковый терапевт = " file.Close Sub dbfSelect(mCode, mName) Sql = "Select COUNT(*) AS VrachChild From " + REESTRO + " Where CODVR=" + mCode + " and (KATEG=3 or KATEG=1)" 'Параметры поиска для каждого врача отдельно RecSet.Open Sql, Connect file.WriteLine mName + CStr(RecSet.Fields("VrachChild")) 'Задает имя строки для записи RecSet.Close End Sub |
------- Отправлено: 11:11, 09-04-2011 | #3 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Спасибо за совет.
А по поводу exel, то он отпадает потому, что собирать эту информацию буду не я, а операторы ЭВМ и желательно что бы на это дело у них уходило минимум действий) |
Отправлено: 20:54, 10-04-2011 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Кушает слишком много оперативной памяти | VbInt | Microsoft Windows NT/2000/2003 | 7 | 07-10-2012 15:10 | |
Event Viewer - ветка Security - слишком много записей | dodger | Microsoft Windows NT/2000/2003 | 9 | 17-12-2009 14:16 | |
Шесть редакций Windows 7: по-прежнему слишком много | OSZone News | Новости и события Microsoft | 5 | 05-02-2009 07:06 | |
Прочее - Слишком много сетевых запросов. | voler | Защита компьютерных систем | 10 | 19-10-2007 11:20 | |
Слишком много устройств... | psyone | Непонятные проблемы с Железом | 16 | 13-08-2004 20:32 |
|