Главная страница
    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.47 MB
Время: 0.056 c
15-1177554156
Slider007
2007-04-26 06:22
2007.05.27
С днем рождения ! 26 апреля


3-1173306371
databaser
2007-03-08 01:26
2007.05.27
Сравнение запросов


2-1178525432
RomanLN
2007-05-07 12:10
2007.05.27
При переносе БД на другой комп, не находит алис


2-1178531293
Doom-2
2007-05-07 13:48
2007.05.27
Проект вызвал исключение EStringListError


15-1177425719
NeyroSpace
2007-04-24 18:41
2007.05.27
Почему у Microsoft ничего не выйдет с .Net





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