Строка запроса в параметрах

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Re: Строка запроса в параметрах

Сообщение imobile » Чт 18 сен 2014 08:15

Никто не отвечает? Вот я сделал, на основе лога пример, замените последний запрос в примере на это

Код: Выделить всё

sz = "INSERT INTO assortim(AS_NAME,AS_BAR,AS_SN,AS_GRUPID,AS_PRICEB,AS_REM,AS_PRICES,AS_VISIBLE) 
             VALUES(:AS_NAME,&AS_BAR,&AS_SN,&AS_GRUPID,&AS_PRICEB,&AS_REM,&AS_PRICES,&AS_VISIBLE)"
UniQuery1->SQL->Clear();
  UniQuery1->SQL->Add(sz);
  UniQuery1->ExecSQL();
  //UniQuery1->MacroByName("AS_NAME")->AsValue -- использовать не получается из-за специальных символов
поэтому использую
UniQuery1->ParamByName("AS_NAME")->AsString =
"2-й орлоносец линейного полка. Франция, 1809-12 гг."
  UniQuery1->MacroByName("GRUPID")->AsValue =
   "(SELECT ASG_ID FROM assortim WHERE ASG_NAME = 'Оловянные солдатики')";
UniQuery1->MacroByName("AS_BAR")->AsValue =  "";
UniQuery1->MacroByName("AS_SN")->AsValue =  "";
UniQuery1->MacroByName("AS_PRICEB")->AsValue =  "3434,55";
UniQuery1->MacroByName("AS_REM")->AsValue =  "<p>\r\n      врпв9мс8н8нэ' mnsfgknm94г.oiogg – офицера, \"lkfgkcm,bcmcbm.      </p>\r\n";/пример, как макрос не работает
UniQuery1->MacroByName("AS_PRICES")->AsValue =  "230";
UniQuery1->MacroByName("AS_VISIBLE")->AsValue =  "1";
  UniQuery1->ExecSQL();
Мне бы хоть какой либо пример, где могли передаваться переменные, идеально бы подошли параметры, но если запрос и числовые передать нельзя, то пытаюсь разделить на параметры и макросы, но у меня они вместе не работают, может в настройках поменять?
Так же можно сделать на основе лога с изображением.Ноо с изображением одно но, я его загружаю в созданный параметер, сложновато его вставить после запроса.

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Строка запроса в параметрах

Сообщение ViktorV » Чт 18 сен 2014 14:30

Используйте макрос только в случае передачи SQL запроса, во всех остальных случаях используйте параметры.
Пожалуйста, выполните приведенный ниже код, возникают ли в нем ошибки?

Код: Выделить всё

sz = "INSERT INTO assortim (AS_NAME,AS_BAR,AS_SN,AS_GRUPID,AS_PRICEB,AS_REM,AS_PRICES,AS_VISIBLE) VALUES(:AS_NAME,:AS_BAR,:AS_SN,&AS_GRUPID,:AS_PRICEB,:AS_REM,:AS_PRICES,:AS_VISIBLE)";
UniQuery1->SQL->Clear();
UniQuery1->SQL->Add(sz);
UniQuery1->ParamByName("AS_NAME")->AsString = "2-й орлоносец линейного полка. Франция, 1809-12 гг.";
UniQuery1->MacroByName("AS_GRUPID")->Value = "(SELECT ASG_ID FROM asgrp WHERE ASG_NAME = 'Оловянные солдатики')";
UniQuery1->ParamByName("AS_BAR")->AsString =  "";
UniQuery1->ParamByName("AS_SN")->AsString =  "";
UniQuery1->ParamByName("AS_PRICEB")->AsFloat =  3434,55;
UniQuery1->ParamByName("AS_REM")->AsString =  "<p>\r\n      врпв9мс8н8нэ' mnsfgknm94г.oiogg – офицера, \"lkfgkcm,bcmcbm.      </p>\r\n";
UniQuery1->ParamByName("AS_PRICES")->AsFloat =  230;
UniQuery1->ParamByName("AS_VISIBLE")->AsInteger =  1;
UniQuery1->ExecSQL();

Закрыто