|
Вопрос # 2 458/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
я использую Ado бд Access,есть 3 таблицы нужно заполнить 3-ю таблицу из первой и второй, так чтобы сохранялась целостность БД
Приложение: Переключить в обычный режим-
-
-
-
-
-
-
-
-
- email
-
-
-
-
-
-
-
-
-
- DataSet:producetable
- Connection:AdoConnection1
-
- MasterSource:dssales
- TableName:produce
- TDatasource:dsmanager
- DataSet:managertable
- Connection:AdoConnection1
-
- MasterSource:dssales
- TableName:manager
- TDatasource:dssales
- DataSet:salestable
- Connection:AdoConnection1
- TableName:sales
-
-
- DBLookupComboBox1
-
- DataSource:Module1.dssales
-
-
- ListSource:Module1.dsproduce
- DataSet:producetable
- Connection:AdoConnection1
-
- MasterSource:dssales
- TableName:produce
-
- DBLookupComboBox2
-
- DataSource:Module1.dssales
-
-
- ListSource:Module1.dsmanager
- DataSet:managertable
- Connection:AdoConnection1
-
- MasterSource:dssales
- TableName:manager
-
-
- Module1.salestable.Edit;
-
-
-
- Module1.salestable.post;
-
-
-
-
 |
Вопрос задал: 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 (статус: Посетитель), 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 (статус: Посетитель), 26 февраля 2009, 21:28 [#4]:
producetable.open не делал сейчас попробую
|
|
new_user (статус: Посетитель), 26 февраля 2009, 21:37 [#5]:
producetable.open, managertable.open сдедал
значения в DBLookupComboBox появились, добавление записи происходит но только две сразу добавляются в одной строке где наименование_по:добавилась запись "код продукта", фио_менеджера:"личный номер", вторая строка нормальная но только столбцы "код продукта", "личный номер" пустые
|
|
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 (статус: Посетитель), 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;
поэтому запись добавлялась дважды
спасибо Мережников Андрей , с вашей помощью разобрался с этим вопросом
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|