![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CreateParameter [D7, MSSQL]
Ильичев С.А. © (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.
Точно такая же ошибка в том же месте.
И почему тогда запрос верно выполняется.
Последовательность действий я не менял.
Просто скобки добавил.
и насколько я себя знаю... ;) я буду трепатся с вами до посинения...
я уже тонял что Вы это любите, но давайте лучше по существу
или вобще ничего.