Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Помогите с SQL - INSERT,   Найти похожие ветки 

 
Wood   (2007-05-11 10:43) [0]

пожалуйста.
Delphi->ADO->MS Access
поле [0] (NUM) индексированное с первичным ключем, тип - счетчик.
поле [1] (name_k) - текстовое.

INSERT INTO mybase (num,name_k) VALUES (:num,:name_k);
ADOCommand.Parameters.Clear;
ADOCommand.Parameters.CreateParameter("num",ftAutoInc, pdInput, -1, <что здесь указать?>);
ADOCommand.Parameters.CreateParameter("name_k",ftString,pdInput, -1, "Имя");
...

вообщем, по моему, я неправильно делаю.. Значение поля num еще не определено..
Подскажите, как правильно выполнить вставку записи при использовании поля, типа "счетчик".
Заранее благодарю.


 
Sergey13 ©   (2007-05-11 10:47) [1]

> [0] Wood   (11.05.07 10:43)
> INSERT INTO mybase (num,name_k) VALUES (:num,:name_k);

ну так раз счетчик, зачем ты в него пишешь?
INSERT INTO mybase (name_k) VALUES (:name_k)


 
Wood   (2007-05-11 11:02) [2]


> Sergey13 ©   (11.05.07 10:47) [1]

Спасибо!

INSERT INTO mybase (name_k) VALUES (:name_k);
ADOCommand.Parameters.Clear;
ADOCommand.Parameters.CreateParameter("name_k",ftString,pdInput, -1, "Имя");

целиком так, правильно?


 
Johnmen ©   (2007-05-11 11:52) [3]


> целиком так, правильно?

Нет.
Две последнии строки ни к селу ни к ж..е :)))


 
Wood   (2007-05-11 12:00) [4]


> Johnmen ©   (11.05.07 11:52) [3]
>
> Нет.
> Две последнии строки ни к селу ни к ж..е :)))
>

почему? Не могли бы вы объяснить? А еще лучше показать на примере, как  правильно.
Кстати, почему именно неправильно? Может быть не целесообразно, скорее?
А если будет

ADOCommand.Parameters.CreateParameter("name_k",ftString,pdInput, -1, <здесь имя переменной>);

то так правильно?
Если у меня параметры создаются динамически и я не знаю пока, сколько их будет?...


 
Johnmen ©   (2007-05-11 12:09) [5]

ADOCommand.CommandText:="INSERT INTO mybase (name_k) VALUES (:name_k);
всё, коллекция параметров создана. заново.

> Если у меня параметры создаются динамически и я не знаю
> пока, сколько их будет?...

Это знает текст запроса.


 
ЮЮ ©   (2007-05-11 12:11) [6]

>Если у меня параметры создаются динамически и я не знаю пока, сколько их будет?...

Их будет ровно столько, сколько в тексте запроса встретится комбинация :<параметр>. А если бы их там не было, то к чему ADOCommand.Parameters.Clear;?


 
Desdechado ©   (2007-05-11 12:12) [7]

Обычно проще включить свойство ParamCheck, что вызывает автоматическое создание параметров по символу двоеточия в тексте запроса.
И незачем лепить их вручную.
И динамически их создастся столько, сколько двоеточий в запросе.


 
Wood   (2007-05-11 12:15) [8]

Ох-хо!! Надеюсь, я правильно понял!
Так к примеру:

ADOCommand.CommandText:="INSERT INTO mybase (name_k) VALUES (:name_k);
ADOCommand.Parameters[0].Value:=<var name>

и не нужно ADOCommand.Parameters.Clear!


 
Ega23 ©   (2007-05-11 12:22) [9]


> ADOCommand.Parameters[0].Value:=<var name>


В принципе правильно. Но лично я предпочитаю через ParamByName обращаться.


 
Johnmen ©   (2007-05-11 12:25) [10]


> Wood   (11.05.07 12:15) [8]

Правильно.
Хотя иногда неплохо бы ещё перед присваивание значения
ADOCommand.Parameters.ParamByName(...).DataType:=...


 
ЮЮ ©   (2007-05-11 12:33) [11]

> Правильно.
> Хотя иногда неплохо бы ещё перед присваивание значения
> ADOCommand.Parameters.ParamByName(...).DataType:=...


Если значение параметру присваивается, то и тип присвоится, если справа все правильно.
А вот для неприсвоенных - тип, ИМХО, гораздо важнее.


 
Anatoly Podgoretsky ©   (2007-05-11 13:18) [12]

> Wood  (11.05.2007 12:00:04)  [4]

Как это не знаешь, как же
тогда создаешь.
Для присвоения параметров
используй

ADOCommand.Parameters.ParamByName


 
Anatoly Podgoretsky ©   (2007-05-11 13:19) [13]

> Wood  (11.05.2007 12:15:08)  [8]

Если ты изменишь запрос, то
твой Parameters[0]. вполне полетит к
черту.


 
Wood   (2007-05-11 13:43) [14]

Спасибо всем за помощь! :)



Страницы: 1 вся ветка

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.08 c
2-1178525796
Lobach
2007-05-07 12:16
2007.05.27
Фреймы


2-1178620054
Neket
2007-05-08 14:27
2007.05.27
Закрепить область в Excel


2-1178640144
DeadTeachers
2007-05-08 20:02
2007.05.27
COM - порт


2-1178575587
Gringoire
2007-05-08 02:06
2007.05.27
Массив из строк


15-1177613059
Некроман_тус
2007-04-26 22:44
2007.05.27
Архив...