Форум: "Начинающим";
Текущий архив: 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