Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
84 / 11 / 7
Регистрация: 10.02.2012
Сообщений: 225
Записей в блоге: 3

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

06.03.2015, 12:21. Показов 533. Ответов 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): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru