Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Вниз

Помогите с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.048 c
2-1178872367
vitv
2007-05-11 12:32
2007.05.27
FormKeyDown-проблема.


3-1173791992
AlexLines
2007-03-13 16:19
2007.05.27
Поиск по blob


1-1175191667
Kolan
2007-03-29 22:07
2007.05.27
Как сделать Wizzard?


2-1178623839
JajaBinks
2007-05-08 15:30
2007.05.27
open dealog и listbox


2-1178285357
Ega23
2007-05-04 17:29
2007.05.27
Проблема выхода из приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский