![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
Честно говоря вижу много картинок, но непонятно что к чему, понятно что Form2 ваша и всё.. Давайте с начала. ЧТО за БД используете. Состав таблиц в этой БД, кактие компоненты используете. При каких действиях возникают проблемы (ваш код и что хотите получить в итоге на словах)
МНого дней ерунда, я сейчас меняю то что делел год назад, у меня запрос 1 на полтора монитора (монитор 21 дюйм разрешение 1680 на 1050) и всё потому что напихал глупых таблиц на парадоксе не прочитав как следует нужные книжки, теперь ещё переделывать и переносить на чтонибудь вроде FIrebird месяца 3-4. Это я к чему, Осваивайте SQL и бросайте локальные бд, если с базами работать собираетесь очень очень осваивайте, даже в ущерб скорости написания. Последний раз редактировалось vovk; 01.06.2010 в 11:24. |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 20.05.2010
Сообщений: 100
|
![]()
бд - аццес
действ-щие. таблицы(только касательно приходной накл)-"PrihodNak","PrihNaklSlave"--главн и побочн соотв. таблица"PrihodNak"-на сервере, адотейбл поля 1)ID-счетчик 2)data-датавремя 3)nomer-числ 4)kontragent-числ 5)sklad_poluchatel-числ *есть еще поле "summa_nds" но я с ним не работаю, просто переносится на клиента на клиенте ClientDataSet с полями 1)ID-счетчик 2)data-датавремя 3)nomer-числ 4)kontragent-числ 5)sklad_poluchatel-числ 6)Postav-лукап по полю4 7)Sklad- лукап по полю5 все подключено работает "PrihNaklSlave" описывать? |
![]() |
![]() |
![]() |
#13 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
Да не,.... что вы делаете?= читайте (что хотитте сделать), и как вы это действие кодом описываете. Ну надо же понять в чём несоответствие. Таблицы да эт нужно.
ТОлько вот таблицы существуют только в бд, любые компоненты формируют набор данных из таблицы (ну это в общем могут быть и отличия) вам это понятно? что в вашем клиент датасет существует лиш временный набор данных, который по идее должен работать с вашей таблией в бд, через какието компоненты. Вы можете добавить в клиентдатасет данные, потом отправить их для сохранения в таблтице вашу бд. Последний раз редактировалось vovk; 01.06.2010 в 12:12. Причина: как всегда правил ошибки, ну люблю я их (не уверен что все доправил) |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 20.05.2010
Сообщений: 100
|
![]()
сейчас сейчас
|
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 20.05.2010
Сообщений: 100
|
![]()
// делаю пикер как бы в дб гриде
procedure TForm2.gridPNColExit(Sender: TObject); begin if gridpn.SelectedField.FieldName = 'data' then DateTimePicker1.Visible := False end; // следующее в интернет е посмотрел procedure TForm2.gridPNDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (gdFocused in State) then begin if (Column.Field.FieldName = 'data') then with DateTimePicker1 do begin Left := Rect.Left + GridPN.Left + 1; Top := Rect.Top + GridPN.Top + 1; Width := Rect.Right - Rect.Left + 2; Width := Rect.Right - Rect.Left + 2; Height := Rect.Bottom - Rect.Top + 2; Visible := True; end;end;end; procedure TForm2.gridPNKeyPress(Sender: TObject; var Key: Char); begin if (key = Chr(9)) then Exit; if (gridpn.SelectedField.FieldName = 'data') then begin DateTimePicker1.SetFocus; SendMessage(DateTimePicker1.Handle, WM_Char, word(Key), 0); end end; procedure TForm2.DateTimePicker1DropDown(Send er: TObject); begin gridpn.DataSource.Edit; end; procedure TForm2.DateTimePicker1Change(Sender : TObject); begin if gridPN.DataSource.IsLinkedTo(DataMo dule1.cdsPrih) then begin DataModule1.cdsPrihdata.Value := DateTimePicker1.DateTime; end;end; procedure TForm2.gridPNEnter(Sender: TObject); begin DataModule1.cdsPrih.Edit; DataModule1.cdsPrihdata.Value:=Date TimePicker1.Date; if DataModule1.cdsPrihSlave.Modified then begin DataModule1.cdsPrihSlave.Post; end; i:=DataModule1.cdsPrihSlave.ApplyUp dates(10); DataModule1.cdsPrihSlave.Active:=fa lse; DataModule1.cdsPrihSlave.Active:=tr ue; if DataModule1.cdsPrih.Modified then DataModule1.cdsPrih.Post; i:=DataModule1.cdsPrih.ApplyUpdates (10); DataModule1.cdsPrih.Active:=false; DataModule1.cdsPrih.Active:=true; end; // вот вкратце каждому полю присваиваю значение procedure TForm2.DBNavigator2PrihSlaveEnter(S ender: TObject); begin DataModule1.cdsPrih.Edit; DataModule1.cdsPrihdata.Value:=Date TimePicker1.Date; if DataModule1.cdsPrihSlave.Modified then begin DataModule1.cdsPrihSlave.Post; end; i:=DataModule1.cdsPrihSlave.ApplyUp dates(10); DataModule1.cdsPrihSlave.Active:=fa lse; DataModule1.cdsPrihSlave.Active:=tr ue; if DataModule1.cdsPrih.Modified then DataModule1.cdsPrih.Post; i:=DataModule1.cdsPrih.ApplyUpdates (10); DataModule1.cdsPrih.Active:=false; DataModule1.cdsPrih.Active:=true; end; // здесь просто сохраняю все потому что метод пост не сохраняет procedure TForm2.Button1Click(Sender: TObject); begin i:=DataModule1.cdsPrih.ApplyUpdates (10); DataModule1.cdsPrih.Active:=false; DataModule1.cdsPrih.Active:=true; i:=DataModule1.cdsPrihSlave.ApplyUp dates(10); DataModule1.cdsPrihSlave.Active:=fa lse; DataModule1.cdsPrihSlave.Active:=tr ue; end; |
![]() |
![]() |
![]() |
#16 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
[CODE][/procedure TForm2.gridPNDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (gdFocused in State) then begin if (Column.Field.FieldName = 'data') then with DateTimePicker1 do begin Left := Rect.Left + GridPN.Left + 1; Top := Rect.Top + GridPN.Top + 1; Width := Rect.Right - Rect.Left + 2; Width := Rect.Right - Rect.Left + 2; Height := Rect.Bottom - Rect.Top + 2; Visible := True; end;end;end; CODE] даже не читаю событие стоит использовать только если хотим самостоятельно расскрасить ячейки грида Код:
может всётаки сподобитесь написать коментарии к своим действиям всё жду пока коментарии напишите (можно просто отредактировать сообщения, а и да пользуйтесь тегом код (#)) |
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 20.05.2010
Сообщений: 100
|
![]()
спасибо за терпение
Код:
// чтобы не выходила ошибка "Data sourse not edit or insert mode" Код:
Код:
// здесь я сохраняюзапись и обновляю таблицу чтобы не выскакивало //сообщение "Key violation" // приходится нажимать при вводе каждой строки Код:
сохраняем данные Код:
Последний раз редактировалось Stilet; 01.06.2010 в 16:53. |
![]() |
![]() |
![]() |
#18 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
![]()
С трудом понимаю вашу логику.. Я бы к примеру давал доступ к DateTimePicker1, толкько если гдето первёл таблицу в режим добавлнения или редактирования. Или наоборот при выборе нового значения в пикере переводил таблицу в режим редатирования , записывал данные, и сохранял, то есть всё делал кпримеру на клоуз ап и действия выглядели бы так, проверили изменилось нет если да, то переводим базув dsEdit записываем, сохраняем. Ченж происходит всегда при смене не зависимо от того, определились мы с датой или нет (по моему так)
gridPNEnter происхордит при получении фокуса и чтото записывать при этом ... ну както неправильно чтоли, Сохранение надо предусмотреть при окончании редактирования, илии добавления новой записи. тут как вы говорит 2 раза для гарантии.. почему не 5 раз.. а вдруг 2 не сработает? Естественно подобное нужно проводить 1 раз и просто контролировать , к примеру try .... except Код:
Код:
|
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 20.05.2010
Сообщений: 100
|
![]()
вот посмотрите
Код:
а все равно выдает ошибку ...not edit or indert mode |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
из дбгрид в sql server | kate158 | БД в Delphi | 7 | 25.08.2009 16:56 |
Как сделать,так что бы запись в из одного ДБГрида добавлялась в другой ДБгрид | Hito | БД в Delphi | 10 | 19.04.2009 21:14 |
Добавить строку в ДБГрид и удалить | MbIJIO | БД в Delphi | 4 | 18.04.2009 12:45 |
буфер,дбгрид,навигация по записям | kate158 | БД в Delphi | 0 | 28.10.2008 15:59 |
первод данных из дбГрид в СтрингГрид! | ANT35 | Помощь студентам | 3 | 19.10.2008 21:08 |