Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
ADOStoredProc Как задать параметры по именам (т.е. используя имена параметров заданных на сервере), т.е. как IB было: with IBStoredProc do begin Active := False; ProcName := 'bzzz'; ParamByName.AsInteger := 123; ... Как такое сделать в ADO? на сервере: CREATE PROCEDURE [dbo].sp_SpecislityStandart_insert @specialityCode varchar(6), ... в дельфе: with DM.StoredProc, Parameters do begin Active := False; ProcedureName := 'sp_SpecialityStandart_insert'; ParamValues['@specialityCode'].AsString := edSpecialityCode.Text; ^^^ тут она ругается, что такого параметра нет... Конечно можно сделать что-то вроде AddParameter.Value := ... ... и так все параметры по порядку, но как-то не очень удобно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 01:01 |
|
||
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
Сорри тест Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 01:03 |
|
||
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
..... ProcedureName := 'sp_SpecialityStandart_insert'; Parameters.CreateParameter('@specialityCode', ftString, pdInput, 6, 0 ); Parameters.ParamByName('@specialityCode').Value := edSpecialityCode.Text; ExecProc; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 10:34 |
|
||
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
Вы не совсем верно поняли мой вопрос :) Параметры, которые создаются с помощью AddParamter, CreateParameter связаны с параметрами в хранимой процедуре тока порядком (очередностью следования), и не связаны по имени, т.е. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если я пишу так... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... то все проходит, а если так... Код: plaintext 1. 2. 3. ... то вылезает ошибка преобразования типа флоат к smalldate, т.е. имя заданного мною параметра ей паралельно... и борланды в своих хелпах это не скрывают... В IB достаточно было тока задать имя процедуры, а все параметры она создаваля сама, и им можно было присваивать значения в любом порядке по именам, которые значились в хранимой процедуре ... В АДО вроде нечто похожее нахожу... property ParamValues[const ParamName: String]: Variant; Note: ParamValues operates with the names of parameters as they appear in an SQL statement or stored procedure, not the Name property of TParameter objects. The two should not be confused. Но когда я делаю так... Код: plaintext 1. 2. 3. 4. ... она ругается: "что такого параметра нет" ВОПРОС: Как такое делается в ADO? (и вообще делается как-то?) плзз... помогите разобраться!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2002, 19:35 |
|
||
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
вот работоспособный пример на ADO компонентах (проверено с вашей процедурой) procedure TForm1.BitBtn1Click(Sender: TObject); var MyProc : TADOStoredProc; begin MyProc := TADOStoredProc.Create(nil); MyProc.Connection := LocalConnection; with MyProc, Parameters do begin Active := False; ProcedureName := 'sp_tTest_insert'; Clear; CreateParameter('@varcharField', ftString, pdInput, 50, 'AABBaabbcc'); CreateParameter('@smalldatetimeField', ftDate, pdInput, 4, '12.12.02'); CreateParameter('@floatField', ftFloat, pdInput, 8, 12.05); ExecProc; end; MyProc.Free; end; вставляет как из пушки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2002, 07:20 |
|
||
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
>>... то все проходит, а если так... >> CreateParameter('@varcharField', ftString, pdInput, 50, 'AABBaabbcc'); >> CreateParameter('@floatField', ftFloat, pdInput, 8, 12.05); >> CreateParameter('@smalldatetimeField', ftDate, pdInput, 4, '12.12.02'); фактические параметры параметры в запрос подставляются так: exec sp_MyProc @Param[0], @Param, @Param если создавать параметры как показано выше, то @Param это ftFloat, @Param ftDate от сюда и ошибка преобразования. >> ProcedureName := 'sp_tTest_insert'; >> ParamValues['@varcharField'].AsString := 'AABBcc'; >> ParamValues['@smalldatetimeField'].AsDate := '12.12.02'; >> ParamValues['@floatField'].AsFloat := 12.05; при таком подходе параметров нет, потому что они не создаются автоматически при задании имени процедуры, в общем что бы можно было к параметру по имени обращятся либо создавать их нужно в прядке следования либо ADOStoredProc.Parameters.ParseSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2002, 08:20 |
|
||
|
(ADO) Как задать параметры?
|
|||
|---|---|---|---|
|
#18+
выше вот этот кусок неверно отображается почему -то Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2002, 08:22 |
|
||
|
|

start [/forum/search_topic.php?author=%2A%D0%9C%D0%B8%D1%85%D0%B0%D0%B8%D0%BB%2A&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
155ms |
check topic access: |
155ms |
track hit: |
180ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 648ms |
| total: | 1238ms |

| 0 / 0 |
