|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Добавление в dbgrid
Код:
var mas: array of integer; i: integer; begin DataModule1.StoredProc.Close; DataModule1.StoredProc.ProcedureName:='SelectNomKey'; DataModule1.StoredProc.Parameters.Clear; DataModule1.StoredProc.Parameters.Refresh; DataModule1.StoredProc.Parameters.ParamByName('@name_key').Value:=FormMain.EditPoiskKey.Text; DataModule1.StoredProc.ExecProc; DataModule1.StoredProc.Active:=True; DataModule1.StoredProc.First; if (DataModule1.StoredProc.RecordCount>0) then SetLength(mas,DataModule1.StoredProc.RecordCount); //по названию ключевого_поля выбираю все коды этих полей и помещаю в дин. массив for i:=0 to DataModule1.StoredProc.RecordCount-1 do begin mas[i]:=DataModule1.StoredProc.FieldValues['nom_key']; DataModule1.StoredProc.Next; end; //все номера (может быть несколько) записываю в массив, после чего по этим кодам ключ. слов ищу документы for i:=0 to length(mas)-1 do begin DataModule1.StoredProc.Close; DataModule1.StoredProc.ProcedureName:='PoiskNomKey'; DataModule1.StoredProc.Parameters.Clear; DataModule1.StoredProc.Parameters.Refresh; DataModule1.StoredProc.Parameters.ParamByName('@nom_key').Value:=mas[i]; DataModule1.StoredProc.ExecProc; DataModule1.StoredProc.Active:=True; DataModule1.StoredProc.First; FormMain.GridRezPoisk.DataSource.DataSet.FieldByName('nom_doc_com').AsString; DataModule1.StoredProc.Next; end; finalize(mas); end; Помогите пожалуйста в этом разобраться. |
#2
|
||||
|
||||
Цитата:
Исходя из этого тебе нужно создать свой набор данных (например TClientDataSet) в который ты будешь добавлять нужные тебе записи и его привязать к TDBGrid. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Ludo (22.05.2013)
|
#3
|
|||
|
|||
Понятно
Цитата:
|
#4
|
||||
|
||||
Надо: AdoCommand, запрос типа "insert into TABLE_nAME (FIELD1, FIELD2, ..., FIELDn) values(VAL1, VAL2, ..., VALn)"
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
Цитата:
Бросаешь на форму этот компонент (или создаёшь программно) настраиваешь в нём нужные поля (тоже можно программно) и добавляешь в него сколько угодно записей так же как и в любой другой DataSet: Код:
ClientDataSet1.Append; // Добавить новую запись ClientDataSet1.FieldByName('Имя поля 1').AsString := 'Какая-то строка'; ClientDataSet1.FieldByName('Имя поля 2').AsString := 'Какая-то строка'; ClientDataSet1.FieldByName('Имя поля 3').AsInteger := 123456789; ClientDataSet1.Post; // Сохранить запись |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Ludo (22.05.2013)
|
#6
|
|||
|
|||
Цитата:
А на какой вкладке у Вас TClientDataSet? |
#7
|
||||
|
||||
Цитата:
А вообще в Delphi можно добавлять компоненты даже не зная на какой вкладке они находятся. В старых Delphi Меню->View->Component List. В новых Delphi строка поиска прямо в палитре компонентов. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Ludo (22.05.2013)
|
#8
|
||||
|
||||
Как-то некрасиво как-то через Аппенд и Пост делать по моему.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
Цитата:
|
#10
|
||||
|
||||
Дак а через ADOCommand и повторным вычитыванием данных?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#11
|
|||
|
|||
Цитата:
А какие поля нужно настроить и с чем связывать? Извините за такие глупые вопросы... |
#12
|
||||
|
||||
Цитата:
|
#13
|
|||
|
|||
Код:
for i:=0 to length(mas)-1 do begin DataModule1.StoredProc.Close; DataModule1.StoredProc.ProcedureName:='PoiskNomDoc'; DataModule1.StoredProc.Parameters.Clear; DataModule1.StoredProc.Parameters.Refresh; DataModule1.StoredProc.Parameters.ParamByName('@nom_doc').Value:=mas[i]; DataModule1.StoredProc.ExecProc; DataModule1.ClientDataSet.Active:=true; DataModule1.ClientDataSet.Append; DataModule1.ClientDataSet.FieldByName('nom_doc_com').AsInteger := DataModule1.StoredProc.FieldValues['nom_doc_com']; DataModule1.ClientDataSet.FieldByName('nom_doc_priv').AsInteger := DataModule1.StoredProc.FieldValues['nom_doc_priv']; DataModule1.ClientDataSet.FieldByName('dat_beg').AsDateTime := DataModule1.StoredProc.FieldValues['dat_beg']; DataModule1.ClientDataSet.FieldByName('dat_end').AsDateTime := DataModule1.StoredProc.FieldValues['dat_end']; DataModule1.ClientDataSet.FieldByName('nom_scan').AsInteger := DataModule1.StoredProc.FieldValues['nom_scan']; DataModule1.ClientDataSet.Post; end; FormMain.GridRezPoisk.DataSource.DataSet.Open; Ошибка: Отсутствуют данные поставщика. ClientDataSet связала с DataSource через MasterSource, а DataSource c StoredProc. И видимо это неправильно, раз данные не получены... |