Главная страница
    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.037 c
15-1177699000
koha
2007-04-27 22:36
2007.05.27
Кто пользуется Process Monitor от www.sysinternals.com?


15-1177769716
TnPsCs
2007-04-28 18:15
2007.05.27
А как сложить строки в PHP?


4-1166908044
Drone
2006-12-24 00:07
2007.05.27
Потоки и сообщения от одного к другому


9-1151909678
bulavkin
2006-07-03 10:54
2007.05.27
DelphiX --- И СНОВА КАРТА


15-1177889760
Tirael
2007-04-30 03:36
2007.05.27
mobility 2003





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский