84 / 11 / 7
Регистрация: 10.02.2012
Сообщений: 225
Записей в блоге: 3

Вылет при выборке в БД Paradox на Windosw Server 2003

06.03.2015, 12:21. Показов 536. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем, привет. Что я делаю не так. БД Paradox. Написал прогу для печати квитанций с QR кодом. На моем компе все работает без ошибок на компе с Windows XP тоже проблем нет, а вот на сервере Windows 2003 вываливается ошибка invalid parametr. Почти все базу пробегает, отсается три или 4-ре записи до конца бац и ошибка. У меня выборка какие записи добавлять во временную таблицу осущестрвляется с помощью switch case, т.е в зависимости какой тариф, таки данные в БД и пишутся. Может я не правильно что то использую? Первый блок case 0: отрабатывает без проблем, когда за комментированы все остальные, как только раскомментирую case 1: тут же появляется эта ошибка. Я думал может некорректно какие-нибудь данные пишутся в таблицу, все проверил все правильно вроде. Спецы гляньте мельком кусок когда плиз, может подскажите, что не так делаю.
спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//--------загружаем из текстового файла тарифы
TStringList *tariff=new TStringList;
tariff->LoadFromFile(Form2->prog_path+"\\tariff.txt");
Table1->DatabaseName=Form2->baza_path;
Table1->TableName="temp.db";
//Table1->Active=true;
Table1->EmptyTable();
Sleep(10);
Table1->Active=true;
int str_out,i;
Query2->DatabaseName=Form2->baza_path;
ProgressBar1->Position=0;
ProgressBar1->Max=Query1->RecordCount;
i=1;
while(!Query1->Eof)
//for(int i=1;i<=Query1->RecordCount-1;i++)
{
                 str_out=Form2->int_out(Trim(Query1->FieldByName("tarifftype")->AsString));
                 switch(str_out)
                  {
                    case 0://заполняем таблицу для печати квитков у кого тариф Б
                    Query2->SQL->Clear();
                    Query2->SQL->Add("select * from nach where accountid='"+Query1->FieldByName("accountid")->AsString+"'");
                    Query2->Active=true;
                    Query2->FindLast();
                               if(Query2->FieldByName("debttek")->AsCurrency>0)
                                  {
                                  Table1->Append();
Table1->FieldByName("accountid")->AsString=Query1->FieldByName("accountid")->AsString;
Table1->FieldByName("subfio")->AsString=Query1->FieldByName("subfio")->AsString;
Table1->FieldByName("subaddress")->AsString=Query1->FieldByName("subaddress")->AsString;
Table1->FieldByName("datafinish")->AsVariant=Query2->FieldByName("dtcalc")->AsVariant;
Table1->FieldByName("countpro")->AsString=Query2->FieldByName("countpro")->AsString;
Table1->FieldByName("counttek")->AsString=Query2->FieldByName("counttek")->AsString;
Table1->FieldByName("nrg")->AsInteger=Query2->FieldByName("nrg")->AsInteger;
Table1->FieldByName("nightpro")->AsString=Query2->FieldByName("nightpro")->AsString;
Table1->FieldByName("nighttek")->AsString=Query2->FieldByName("nighttek")->AsString;
Table1->FieldByName("night")->AsInteger=Query2->FieldByName("night")->AsInteger;
Table1->FieldByName("nachsum")->AsCurrency=Query2->FieldByName("nachsum")->AsCurrency;
Table1->FieldByName("tarifftype")->AsString=Query1->FieldByName("tarifftype")->AsString;
Table1->FieldByName("barcodvyb")->AsString=Query2->FieldByName("accountid")->AsString+"  "+Query2->FieldByName("nachsum")->AsCurrency*100;
Table1->FieldByName("tariffden")->AsCurrency=tariff->Strings[0];
Table1->FieldByName("debpro")->AsCurrency=Query2->FieldByName("debtpro")->AsCurrency;
Table1->FieldByName("debtek")->AsCurrency=Query2->FieldByName("debttek")->AsCurrency;
Table1->FieldByName("paysum")->AsCurrency=Query2->FieldByName("paysum")->AsCurrency;
Query2->Prior();
Table1->FieldByName("datastart")->AsDateTime=Query2->FieldByName("dtcalc")->AsDateTime;
                                  }
                                  else{}
                    break;
                    
 case 1://заполняем таблицу для печати квитков у кого тариф Б2
 //***************************************************************************************
 
                    Query2->SQL->Clear();
                    Query2->SQL->Add("select * from nach where accountid='"+Query1->FieldByName("accountid")->AsString+"'");
                    Query2->Active=true;
                    Query2->FindLast();
                               if(Query2->FieldByName("debttek")->AsCurrency>0)
                                  {
                                  Table1->Append();
Table1->FieldByName("accountid")->AsString=Query1->FieldByName("accountid")->AsString;
Table1->FieldByName("subfio")->AsString=Query1->FieldByName("subfio")->AsString;
Table1->FieldByName("subaddress")->AsString=Query1->FieldByName("subaddress")->AsString;
Table1->FieldByName("datafinish")->AsVariant=Query2->FieldByName("dtcalc")->AsVariant;
Table1->FieldByName("countpro")->AsString=Query2->FieldByName("countpro")->AsString;
Table1->FieldByName("counttek")->AsString=Query2->FieldByName("counttek")->AsString;
Table1->FieldByName("nrg")->AsInteger=Query2->FieldByName("nrg")->AsInteger;
Table1->FieldByName("nightpro")->AsString=Query2->FieldByName("nightpro")->AsString;
Table1->FieldByName("nighttek")->AsString=Query2->FieldByName("nighttek")->AsString;
Table1->FieldByName("night")->AsInteger=Query2->FieldByName("night")->AsInteger;
Table1->FieldByName("nachsum")->AsCurrency=Query2->FieldByName("nachsum")->AsCurrency;
Table1->FieldByName("tarifftype")->AsString=Query1->FieldByName("tarifftype")->AsString;
Table1->FieldByName("barcodvyb")->AsString=Query2->FieldByName("accountid")->AsString+"  "+Query2->FieldByName("nachsum")->AsCurrency*100;
Table1->FieldByName("debpro")->AsCurrency=Query2->FieldByName("debtpro")->AsCurrency;
Table1->FieldByName("debtek")->AsCurrency=Query2->FieldByName("debttek")->AsCurrency;
Table1->FieldByName("paysum")->AsCurrency=Query2->FieldByName("paysum")->AsCurrency;
Table1->FieldByName("tariffden")->AsCurrency=tariff->Strings[1];
Table1->FieldByName("tariffnight")->AsCurrency=tariff->Strings[2];
Query2->Prior();
                                  Table1->FieldByName("datastart")->AsDateTime=Query2->FieldByName("dtcalc")->AsDateTime;
 
                                  }
                                  else{}
                             break;
Вот функция, которая возвращает номер для switch case
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int int_out(AnsiString str_baza)
{
AnsiString str[]={"Б","Б2","С","С2","Э","Э2"};
AnsiString str1;
str1=str_baza;
 int str_out;
 
     for(int i=0;i<=3;i++)
     {
      if(str1==str[i])
        {
         str_out=i;
         break;
        }
 
 
     }
return str_out;
 
};
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2015, 12:21
Ответы с готовыми решениями:

Лицензирование и настройка сервера терминалов windosw server enterprise
У меня такой вопрос имеетса вишеуказаный сервер на котором истекает срок пробной активации сервера терминалов. И насколько я узнал что бы...

Paradox 4.0 на WinServer 2003
Всем привет! Вот такая ситуевина возникла. Стоял сервак на NetWare 4 , на нем крутилась база Paradoxa 4.0. С клиентскими машинами под 98...

Повреждён isapnp.sys при установке server 2003
Здравствуйте. Я сегодня получил задание поднять в офисе сервер. Покопавшись на складе нашёл пару железок, среди них жестяк на...

1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
06.03.2015, 14:38
Могу сказать такую вещь. Логику особо не проверял. Но могу сказать 2 вещи код очень громоздкий, некоторые строки в этом коде можно вообще объединить в отдельную функцию. А также я всегда придерживаюсь одного стандартного правила, что лучше запросы в цикл не вставлять, а заранее сначала выбрать запросом нужные строки, а потом уже по этим строкам циклом пробегать и делать с ними нужные вещи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2015, 14:38
Помогаю со студенческими работами здесь

Неполадки с сетью, при запуске server 2003 ошибка
Всем привет. Надеюсь на Вашу помощь. Вся работа стоит. Сам не очень разбираюсь в администрировании, только учусь. Есть сеть, сервер...

При установки windows server 2003, выдает ошибку
Подскажите, пожалуйста. Купил сервер на работу, его параметры: HT/C2Duo E8400 box/p5q/2xddr2g/800 Kingston 2x3.5 ...

Запуск комманды при подключении по терминалу server 2003
Добрый день форумчане. Нужно автоматически запустить команду на Windows Server 2003 при подключении по терминалу без указания запуска...

При установке windosw 7 не видит системный диск
Хотел переустановить винду 7(флешка), но не смог так как при выборе на какой диск поставить (C или D) ну как обычно, диска C просто нету...

Ошибка DNS при установке Exchange 2007 в Server 2003 R2
Здравствуйте, уважаемые форумчане. В универе было дано задание установить Windows Server в виртуалку и в него Exchange. Поскольку мой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru