Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CreateParameter [D7, MSSQL]


Страницы:   1 2

Ильичев С.А. ©   (2005-10-27 13:11:00) 


     Parameters.CreateParameter('Param1', ftInteger, pdInput, SizeOf(Integer), PInt(Node.Data)^);

     SQL.Text := 'SELECT P1.[Project_ID], P1.[Project_Name], (SELECT COUNT(*) FROM [v_Project] P2 WHERE P1.[Project_ID] = P2.[Parent_Project_ID]) AS Children_Count FROM [v_Project] P1 WHERE P1.[Parent_Project_ID] = :Param1';


Есть какая-то тайна в этом действии
при назначении текста SQL вываливается EAccessViolation в модуле MSVCRT.dll
Расскажите как с параметрами работать.


Nikolay M.   (2005-10-28 13:23:00) [1]


> Johnmen ©   (28.10.05 12:44) [37]
> Использовать ADOQuery "легче", чем ADOCommand. ИМХО.

На вкус и цвет все фломастеры разные :)


Johnmen   (2005-10-28 12:44:00) [2]

>Nikolay M. ©   (28.10.05 12:09) [32]
>Мне всегда хватало ADODataSet и ADOCommand.

Так и знал. :)
Использовать ADOQuery "легче", чем ADOCommand. ИМХО.


Nikolay M.   (2005-10-28 12:35:00) [3]


> Первый мысль - это "А есть ли вообще этот квери ?

Не первый, а второй. Первый был я :)
Вопрос уже решен.


msguns   (2005-10-28 12:30:00) [4]

>Ильичев С.А. ©   (28.10.05 12:11) [33]
>это прикол ?

Да ведь до приколов ли тут ? А как прикажешь думать, если у тебя а этом операторе
 SQL.Text :=
вылезает AV ?

Первый мысль - это "А есть ли вообще этот квери ? В смысле создан ли, а если создан, то не грохнут ?"
Второй мысль - это глюк в самом операторе, т.е. в момент присвоения этому св-ву нового значения где-то "внутре" TADOCustomDataSet проистекает нечто, что приводит к AV. Например, попытка перестроить список параметров (Parameters)..

Есть еще и третий мысль. Но не скажу.
Пока ;)


Nikolay M.   (2005-10-28 12:26:00) [5]


> OLE DB initstring

Не придерешься :(
А если with убрать?


> как мне запрос с DELETE выполнить и получить количество удалённых строк

Прочитать варианты вызова TADOCommand.Execute.


Ильичев С.А.   (2005-10-28 12:11:00) [6]

2 Nikolay M. ©   (28.10.05 11:32) [27]

В "родном" АДО такого объекта как ADOQuery не существует, в дельфях он сделан как наследник TCustomADODataSet для тех, кто привык пользоваться БДЕшным TQuery.

Ну так то и TADODataSet тоже наследник TCustomADODataSet.  ;)

А содержимое у этого файла есть?

[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=programm_connector;Initial Catalog=Billing;Data Source=NVV


"По-простому" - это как?
меня в таком случае больше интересует как мне запрос с
DELETE выполнить и получить количество удалённых строк

2 msguns ©   (28.10.05 12:02) [30]
Попробуй перед
SQL.Text :=
поставить
if not assigned(ADOQuery1) then ShowMessage('А ведь кверьки-то нетути');

это прикол ?


Nikolay M.   (2005-10-28 12:09:00) [7]


> Johnmen ©   (28.10.05 12:04) [31]

Яснее все равно не стало :)
Мне всегда хватало ADODataSet и ADOCommand.


Johnmen   (2005-10-28 12:04:00) [8]

Начнем тогда с "...делать INSERT, ..."


msguns   (2005-10-28 12:02:00) [9]

>Ильичев С.А. ©   (28.10.05 11:26) [26]
>А что, есть сведения что ADODataSet получше ADOQuery ?

Нет, тот же хрен, только вид сбоку ;))

>>Так у тебя нету "живого" TADOQuery.
>не понял

Попробуй перед
  SQL.Text :=поставить
if not assigned(ADOQuery1) then ShowMessage('А ведь кверьки-то нетути');


Nikolay M.   (2005-10-28 11:57:00) [10]


>  INSERT по-простому

"По-простому" - это как?


Johnmen   (2005-10-28 11:45:00) [11]

>Nikolay M. ©   (28.10.05 11:32) [27]
>... в дельфях он сделан как наследник TCustomADODataSet для тех, кто привык пользоваться БДЕшным TQuery.

А для тех, кто любит делать INSERT по-простому, что сделано?
:)


Nikolay M.   (2005-10-28 11:32:00) [12]


> Строка подключения - имя .udl файла.

А содержимое у этого файла есть?


> А что, есть сведения что ADODataSet получше ADOQuery

В "родном" АДО такого объекта как ADOQuery не существует, в дельфях он сделан как наследник TCustomADODataSet для тех, кто привык пользоваться БДЕшным TQuery.


Ильичев С.А.   (2005-10-28 11:26:00) [13]

2 Nikolay M. ©   (28.10.05 11:15) [25]
Строка подключения - имя .udl файла.

А что, есть сведения что ADODataSet получше ADOQuery ?
Я просто с АДО недавно.

2 msguns ©   (28.10.05 11:14) [24]
Так у тебя нету "живого" TADOQuery.
не понял

И еще-а зачем кв.скобки ?
Я так привык. Мне удобно.


Nikolay M.   (2005-10-28 11:15:00) [14]

Строку подключения покажи?
А если, как уже советовалось, вместо ADOQuery использовать ADODataSet?


msguns   (2005-10-28 11:14:00) [15]

Так у тебя нету "живого" TADOQuery.
И еще-а зачем кв.скобки ?


Ильичев С.А.   (2005-10-28 11:09:00) [16]

2 Nikolay M. ©   (28.10.05 10:56) [22]

да на буттон1клик просто скопировал косок
само собой всё создано

Попробуй мдак посвежее поставить.
сейчас скачаю

2 msguns ©   (28.10.05 10:52) [21]
да что тут не понятного, блин, я вобще не попаду на
Parameters.ParamByName('Param1').Value := PInt(Node.Data)^)
по тому что исключение раньше возникат


Nikolay M.   (2005-10-28 10:56:00) [17]


> Ильичев С.А. ©   (28.10.05 10:41) [20]

Попробуй мдак посвежее поставить.

Надеюсь, этот код выполняется не в OnCreate главной формы и на момент выполнения DataModule2.ADOQuery1 существует?


msguns   (2005-10-28 10:52:00) [18]

>Ильичев С.А. ©   (28.10.05 10:41) [20]

with DataModule2.ADOQuery1 do
begin
  SQL.Text := 'SELECT P1.[Project_ID], P1.[Project_Name], (SELECT COUNT(*) FROM [v_Project] P2 WHERE P1.[Project_ID] = P2.[Parent_Project_ID]) AS Children_Count FROM [v_Project] P1 WHERE P1.[Parent_Project_ID] = :Param1';
 Parameters.ParamByName('Param1').Value := PInt(Node.Data)^);
  ...
end;


Ильичев С.А.   (2005-10-28 10:41:00) [19]

2 Nikolay M.

Версию MDAC занеси в студию

2.70.7713.4

месте автора я бы начал с того, что выкинул все, кроме присвоения текста SQL и посмотрел, останется ли ошибка.


 with DataModule2.ADOQuery1 do
 begin
   SQL.Text := 'SELECT P1.[Project_ID], P1.[Project_Name], (SELECT COUNT(*) FROM [v_Project] P2 WHERE P1.[Project_ID] = P2.[Parent_Project_ID]) AS Children_Count FROM [v_Project] P1 WHERE P1.[Parent_Project_ID] = :Param1';
 end;


Ошибка осталась.


Ильичев С.А.   (2005-10-28 10:27:00) [20]

2 sniknik ©   (27.10.05 20:36) [17]

мы на одном языке говорим ?

на это было отвечено в посте номер [5] с пояснениями в [8]

смотрю [5]

ну во первых параметр это тоже обьект. возможно по какойто причине первый раз не создавлся.

как добваление скобок во второй строке влияет на результат выполнения предыдущей? А?

смотрю [8]

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

Повторяю [2]
Убрал CreateParameter.
Точно такая же ошибка в том же месте.


И почему тогда запрос верно выполняется.
Последовательность действий я не менял.
Просто скобки добавил.

и насколько я себя знаю... ;) я буду трепатся с вами до посинения...
я уже тонял что Вы это любите, но давайте лучше по существу
или вобще ничего.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо