|
#1
|
|||
|
|||
Цикл в таблице
Помогите разобраться с такой задачей, есть Edit в него пишется число (количество), по нажатии кнопки необходимо, что бы в ADODataSet добавилось количество записей равному указанному числу в Edit, так что бы в поле "Номер" последовательно происходила нумерация 1, 2, 3, и так до i:=StrToInt(Edit1.Text)
что то вроде этого Код:
var i: integer; index: integer; begin index:=0; i:=StrToInt(Edit1.Text); for index:=0 to i do DataModule2.ExDS.Insert; DataModule2.ExDS.FieldValues['Номер экземпляра']:=index+1; DataModule2.ExDS.Post; |
#2
|
||||
|
||||
Не занимайтесь хернёй, делайте insert/update таблицы через запрос.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
А как такой запрос написать для ADODataSet?
|
#4
|
||||
|
||||
Никакой.
Надо писать запрос для ADOCommand, типа insert into table(...) values(...). — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Brons14 (28.05.2015)
|
#5
|
|||
|
|||
А можно подробнее, в инете не нашел информации как запрос писать в ADOCommand, я создал его, а дальше куда писать запрос и как, что бы по нажатии кнопки он добавлял записи определенного количества в ADODataSet
|
#6
|
|||
|
|||
твоя проблема в том, что ты не обрамил тело цикла в begin..end. Соотв. в цикле у тебя выполняется только первая команда.
Код:
for index:=0 to i do begin DataModule2.ExDS.Insert; DataModule2.ExDS.FieldValues['Номер экземпляра']:=index+1; DataModule2.ExDS.Post; end; Можно, конечно, добавлять запросами через ADOCommand (кстати, если не изменяет память, то подобный запрос можно выполнить и через ADOConnection, вроде у него есть метод ExecSQL), но с точки зрения выполняемых комманд это будет абсолютно тоже самое, только, в случае использования прямого запроса, надо будет еще и перечитать открытый DataSet. Тут надо смотреть что же тебе надо на самом деле. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Brons14 (28.05.2015)
|
#7
|
|||
|
|||
А как реализовать это циклом? Мой код даже записи не добавляет
|
#8
|
|||
|
|||
А ты уверен, что не добавляет? В моей редакции должен. Просто другие компоненты, нацеленные на эту таблицу, просто не знают о том, что записи добавились. Надо их переоткрыть.
|
#9
|
|||
|
|||
Не знаю пока, как сделать что бы каждой записи в поле Номер присваивалось значение, поэтому делаю для примера так
Код:
i:=StrToInt(Edit1.Text); for index:=0 to i do begin DataModule2.ExDS.Insert; DataModule2.ExDS.Post; end; |
#10
|
||||
|
||||
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Brons14 (28.05.2015)
|
#11
|
|||
|
|||
Цитата:
Проверь тип транзакции. Впечатление, что у тебя commit не проходит. |
#12
|
|||
|
|||
управление транзакциями вообще не применялось,
а по ADOCommand не нашел информации как его связать с таблицей и куда писать текст запроса, и я так понимаю он должен быть с параметром Последний раз редактировалось Brons14, 28.05.2015 в 23:47. |