powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / В чем причина, почему не работает параметр?
5 сообщений из 5, страница 1 из 1
В чем причина, почему не работает параметр?
    #32684806
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу клиента Builder6->ADO->MS Access XP

из файла тяну параметризованный запро вида

Код: plaintext
SQL_# 2 =SELECT  *  FROM  TBL_PERSONA  WHERE SUBDIV_ID = :pSUBDIV_ID   ORDER BY PERSON_FIO ASC

создаю параметр pSUBDIV_ID, ему присваиваю 1,
выполняю запрос, получаю рекодсет с количеством строк ==0 !

вот кусок кода, и что ме показывает билдер после препарирования запроса


Код: plaintext
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.
                                       //Наполняем раздел персонала 
                                       //Делаем проверку типа БД для извлечения необходимого запроса 
                                       //Необходимо добавить в каждое подразделение списки 
                                       //персонала и обучаемых 
                                       //Для начала выбираем список персанала подразделения 
                                       //Для этого необходимо прочитать запрос SQL_#2 из секции в соответствии с типом базы данных 
                                      if (DBType=="MicroSoft Access 95,97,2000,2002(Xp),2003")
                                        { //0010 

                                            //Необходимо прочитать запрос SQL_#2 из секции [SQL  MicroSoft Access 95,97,2000,2002(Xp),2003] 
                                           SQL = locAdminIni->ReadString("SQL  MicroSoft Access 95,97,2000,2002(Xp),2003","SQL_#2","SQL_#1ReadError");
                                           if (SQL == "SQL_#1ReadError")
                                             { //00011 

                                                Application->MessageBox("Запрос для чтения персонала подразделения не определен!", "Ошибка чтения запроса!", MB_OK);
                                                return;

                                             }; //00011 

                                         } //0010 

                                          //Запрос извлечен, но он содержит параметр по полю  SUBDIV_ID ---> pSUBDIV_ID 
                                          //Необходимо создать парамет pSUBDIV_ID, и установить его в nSUBDIV_ID!!! 
                                         ParamValue = LocnSUBDIV_ID;
                                         locADOQuery->Parameters->CreateParameter("pSUBDIV_ID",ftLargeint,pdUnknown,sizeof(long),ParamValue);

                                          //Параметр создан, подготавливаемся к выборке данных 
                                         locADOQuery->Close();
                                         locADOQuery->SQL->Clear();
                                         locADOQuery->SQL->Add(SQL);
                                         locADOQuery->Prepared = true;
                                         SQL = locADOQuery->Parameters->ParseSQL(SQL,true);


                                          try
                                             { //0012try 

                                                //Screen->Cursor = crSQLWait; 
                                               locADOQuery->Open();

                                              } //0012try 
                                               catch (Exception &exception)
                                                    { //0012_1 

                                                        //Application->ShowException(&exception); 
                                                       Screen->Cursor = crDefault;
                                                       GetAdoConnectionError( locADOConnection );
                                                        //delete AdminIni; 
                                                       return;

                                                     } //0012_1 

                        //Данные извлечены 
                        //Начинаем заполнение 
                       RecCount = locADOQuery->RecordCount; //Извлекаем количество полученных записей 
                        //pItems =  locAdminTreeView->Items;//Получаем список узлов 
                        //pItem  =  pItems->GetFirstNode();//Указатель на корень 
                        //pItemRoot =  pItem;//корень 

                        //Заполняем от корня данными типа TBL_PERSONA 
                       if(locADOQuery->Active)
                         { //007 

                            locADOQuery->First(); //Остановились на первой записи RecordSet 
                            for(int counter= 1 ;counter <= RecCount;counter++)
                               {// 0071 


RecCount == 0 !!!


-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
В чем причина, почему не работает параметр?
    #32684815
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
ParamValue = LocnSUBDIV_ID;
где OleVariant ParamValue   
long  LocnSUBDIV_ID = 1 ;
-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
В чем причина, почему не работает параметр?
    #32684985
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно...
но попробуй так .
не создавай параметры в ручную :)
так как он сам их создает , ну насколько я знаю у меня так и есть
Код: plaintext
1.
2.
3.
4.
5.
6.
   locADOQuery->Close();
   locADOQuery->SQL->Clear();
   locADOQuery->SQL->Add(SQL);
   locADOQuery->Prepared = true;
   locADOQuery->ParamCheck  = true;
   SQL = locADOQuery->Parameters->ParseSQL(SQL,true);

так как я сейчас еще проверил у меня вот так все работает отлично

Код: plaintext
1.
2.
3.
4.
5.
6.
   ADOQuery1->Close();
   ADOQuery1->SQL->Clear();
   ADOQuery1->SQL->Add("select * from cl_table_z where deleted = :del_key");
   ADOQuery1->Parameters->Items[ 0 ]->Value =  1 ;
   ADOQuery1->Open();


выбрались данные из таблицы cl_table_z только те если deleted = 1


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
В чем причина, почему не работает параметр?
    #32685302
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все получилось, вот как я сделал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
                                          //Параметр создан, подготавливаемся к выборке данных 
                                         locADOQuery->Close();
                                         locADOQuery->SQL->Clear();
                                         locADOQuery->SQL->Add(SQL);
                                         locADOQuery->Prepared = true;
                                         locADOQuery->ParamCheck = true;
                                          //SQL = locADOQuery->Parameters->ParseSQL(SQL,false); 


                                          //Запрос извлечен, но он содержит параметр по полю  SUBDIV_ID ---> pSUBDIV_ID 
                                          //Необходимо создать парамет pSUBDIV_ID, и установить его в nSUBDIV_ID!!! 
                                          //ParamValue = LocnSUBDIV_ID; 
                                          //locADOQuery->Parameters->CreateParameter("pSUBDIV_ID",ftLargeint,pdUnknown,sizeof(long),ParamValue.VInteger); 
                                         locADOQuery->Parameters->ParamByName("pSUBDIV_ID")->Value = LocnSUBDIV_ID;
                                          //locADOQuery->Parameters->Add(); 
                                         //SQL = locADOQuery->Parameters->ParseSQL(SQL,true);

-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
В чем причина, почему не работает параметр?
    #32685330
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да можно и так .

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / В чем причина, почему не работает параметр?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]