Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 458

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
я использую Ado бд Access,есть 3 таблицы нужно заполнить 3-ю таблицу из первой и второй, так чтобы сохранялась целостность БД

Приложение:
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. email
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. DataSet:producetable
  21. Connection:AdoConnection1
  22.  
  23. MasterSource:dssales
  24. TableName:produce
  25. TDatasource:dsmanager
  26. DataSet:managertable
  27. Connection:AdoConnection1
  28.  
  29. MasterSource:dssales
  30. TableName:manager
  31. TDatasource:dssales
  32. DataSet:salestable
  33. Connection:AdoConnection1
  34. TableName:sales
  35.  
  36.  
  37. DBLookupComboBox1
  38.  
  39. DataSource:Module1.dssales
  40.  
  41.  
  42. ListSource:Module1.dsproduce
  43. DataSet:producetable
  44. Connection:AdoConnection1
  45.  
  46. MasterSource:dssales
  47. TableName:produce
  48.  
  49. DBLookupComboBox2
  50.  
  51. DataSource:Module1.dssales
  52.  
  53.  
  54. ListSource:Module1.dsmanager
  55. DataSet:managertable
  56. Connection:AdoConnection1
  57.  
  58. MasterSource:dssales
  59. TableName:manager
  60.  
  61.  
  62. Module1.salestable.Edit;
  63.  
  64.  
  65.  
  66. Module1.salestable.post;
  67.  
  68.  
  69.  
  70.  


new_user Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: new_user (статус: Посетитель)
Вопрос отправлен: 26 февраля 2009, 06:25
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 27 февраля 2009, 21:05; участников в обсуждении: 2.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 26 февраля 2009, 18:36 [#1]:

1. свойство KeyField - должно содержать имя поля, в котором содержится код (ID) значения, ListField - имя поля, значение которого отображается для выбора.
2. Открываются ли таблицы, значения которых используются значения для ComboBox перед предъявлением пользователю?
3. Если хотите добавить запись, то надо использовать не salestable.edit, а salestable.append или salestable.appendrecord
new_user

new_user (статус: Посетитель), 26 февраля 2009, 19:26 [#2]:

KeyField изменил значения

DBLookupComboBox1
DataField:наименование_по
DataSource:Module1.dssales
KeyField:код_продукта
ListField:наименование_по
ListSource:Module1.dsproduce
DataSet:producetable
Connection:AdoConnection1
IndexName:код_продукта
MasterSource:dssales
TableName:produce

DBLookupComboBox2
DataField:фио_менеджера
DataSource:Module1.dssales
KeyField:личный_номер
ListField:фио
ListSource:Module1.dsmanager
DataSet:managertable
Connection:AdoConnection1
IndexName:личный_номер
MasterSource:dssales
TableName:manager

на добавление записи у меня стоит salestable.insert , salestable.edit стоит на редактировании я не тот код скопировал.

KeyField изменил но значения в DBLookupComboBox так и не появились
ни до F9 ни после
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 26 февраля 2009, 21:20 [#3]:

DataSource связан с каким-то компонентом (например producetable), делаете producetable.open? и не надо заполнять свойство mastersource
new_user

new_user (статус: Посетитель), 26 февраля 2009, 21:28 [#4]:

producetable.open не делал сейчас попробую
new_user

new_user (статус: Посетитель), 26 февраля 2009, 21:37 [#5]:

producetable.open, managertable.open сдедал
значения в DBLookupComboBox появились, добавление записи происходит но только две сразу добавляются в одной строке где наименование_по:добавилась запись "код продукта", фио_менеджера:"личный номер", вторая строка нормальная но только столбцы "код продукта", "личный номер" пустые
new_user

new_user (статус: Посетитель), 26 февраля 2009, 22:09 [#6]:

sorry забыл добавить две строки на добавление записи поэтому "код продукта", "личный номер" были пустыми

Module1.salestable.append;
Module1.salestable.FieldByName('личный_номер').asString:=Module1.managertable.FieldByName('личный_номер').asString;
Module1.salestable.FieldByName('код_продукта').asString:=Module1.table1.FieldByName('код_продукта').asString;
Module1.salestable.FieldByName('Название_организации').asString:=Module1.clientstable.FieldByName('Название').asString;
Module1.salestable.FieldByName('Наименование_ПО').asString:=Module1.table1.FieldByName('Наименование').asString;
Module1.salestable.FieldByName('ФИО_менеджера').asString:=Module1.managertable.FieldByName('ФИО').asString;
Module1.salestable.FieldByName('Дата').value:=DateTimePicker1.Date;
Module1.salestable.FieldByName('Кол-во').value:=SpinEdit1.Value;
Module1.salestable.post;

form5.close;

но по прежнему добавляется две записи строки, в одной "код продукта", "личный номер" пустые по прежнему
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 27 февраля 2009, 16:03 [#7]:

добавление происходит после нажатия на кнопку? На первый взгляд - все нормально. Единственное, что приходит в голову - кнопка нажимается дважды. Вообще, я бы использовал для добавления записей компонент ADOQuery с соответствующим SQL запросом
new_user

new_user (статус: Посетитель), 27 февраля 2009, 21:05 [#8]:

да действительно два раза запись добавляется

нажимаю на кнопку и вызываю это
procedure TFrame4.Button1Click(Sender: TObject);
begin
form5.show;
form5.Button1.Show;
form5.Button2.Show;
form5.Button3.hide;
module1.salestable.insert;
end;

а птом еще делаю

Module1.salestable.append;
Module1.salestable.FieldByName('личный_номер').asString:=Module1.managertable.FieldByName('личный_номер').asString;
Module1.salestable.FieldByName('код_продукта').asString:=Module1.table1.FieldByName('код_продукта').asString;
Module1.salestable.FieldByName('Название_организации').asString:=Module1.clientstable.FieldByName('Название').asString;
Module1.salestable.FieldByName('Наименование_ПО').asString:=Module1.table1.FieldByName('Наименование').asString;
Module1.salestable.FieldByName('ФИО_менеджера').asString:=Module1.managertable.FieldByName('ФИО').asString;
Module1.salestable.FieldByName('Дата').value:=DateTimePicker1.Date;
Module1.salestable.FieldByName('Кол-во').value:=SpinEdit1.Value;
Module1.salestable.post;
form5.close;

поэтому запись добавлялась дважды

спасибо Мережников Андрей , с вашей помощью разобрался с этим вопросом

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.02 сек.