Topic: Конфликт 2-х db
как правельно подключить вторую SQLite или конфликт не избежен?
SQLExecute('ATTACH DATABASE ''setting\sqlite.db'' as ''SETTING''');
My Visual Database → Russian → Конфликт 2-х db
как правельно подключить вторую SQLite или конфликт не избежен?
SQLExecute('ATTACH DATABASE ''setting\sqlite.db'' as ''SETTING''');
хотя нет... Проверил без подключения ко второй базе происходит тоже самое
а именно..
при отображении карточки оборудования не все поля заполнены.
при первом заполнении формы приема оборудования или заявки в карточке отображаются все параметры но при втором заполнении начинаются глюги ...
если при приеме оборудования от клиента и от компании указать одинаковые параметры оборудования то они тоже в итоге не отображаются
Не могу найти где именно я ошибся..
https://yadi.sk/d/VHZkBV7PZXBfsg
для перехода к карточке оборудования нужно дважду кликнуть пи записи в гриде
скрипт..
//**************************** Карточка оборудования компании ***********************//
procedure frmComServiceList_OnShow (Sender: TObject; Action: string);
begin
frmComServiceList.eNameCompany.Text := SQLExecute('SELECT NameCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eStreetCompany.Text := SQLExecute('SELECT streetCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eHouseCompany.Text := SQLExecute('SELECT houseCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eFractionCompany.Text := SQLExecute('SELECT fractionCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eOfficeCompany.Text := SQLExecute('SELECT officeCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eTelCompany.Text := SQLExecute('SELECT telCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eNameTypeOfEquipment.Text := SQLExecute('SELECT nameTypeOfEquipment FROM TypeOfEquipment WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eNameManufacturer.Text := SQLExecute('SELECT nameManufacturer FROM manufacturer WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eModel.Text := SQLExecute('SELECT Model FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eSerialNamber.Text := SQLExecute('SELECT SerialNamber FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eEquipment.Text := SQLExecute('SELECT Equipment FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.mDescriptionATCsWords.Text := SQLExecute('SELECT DescriptionATCsWords FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.mExternalStatus.Text := SQLExecute('SELECT ExternalStatus FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.mDiagnostics.Text := SQLExecute('SELECT Diagnostics FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.cbStatusName.DbItemID := SQLExecute('SELECT id_status FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
// отбираем список выполненных работ через счетчик записей, для этого передаем record_count в строку eSearchListWork
frmComServiceList.eSearchListWork.Text := SQLExecute('SELECT record_count FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
//клик кнопку поиска
frmComServiceList.bSearchListWork.Click;
end;
//**************************** Карточка оборудования клиента ***********************//
procedure clientServiseList_OnShow (Sender: TObject; Action: string);
begin
frmClientServiсeList.efirstNameClient.Text := SQLExecute('SELECT firstNameClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.etwoNameClient.Text := SQLExecute('SELECT twoNameClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.elastNameClient.Text := SQLExecute('SELECT lastNameClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eAdresClient.Text := SQLExecute('SELECT adresClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.ePassportSeriesClient.Text := SQLExecute('SELECT passportNamberClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.ePassportNamberClient.Text := SQLExecute('SELECT passportSeriesClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eTelephonClient.Text := SQLExecute('SELECT telephonClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eNameTypeOfEquipment.Text := SQLExecute('SELECT nameTypeOfEquipment FROM TypeOfEquipment WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eNameManufacturer.Text := SQLExecute('SELECT nameManufacturer FROM Manufacturer WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eModel.Text := SQLExecute('SELECT Model FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eSerialNamber.Text := SQLExecute('SELECT SerialNamber FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.eEquipment.Text := SQLExecute('SELECT Equipment FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.mDescriptionATCsWords.Text := SQLExecute('SELECT DescriptionATCsWords FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.mExternalStatus.Text := SQLExecute('SELECT ExternalStatus FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.mDiagnostics.Text := SQLExecute('SELECT Diagnostics FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmClientServiсeList.cbStatusName.DbItemID := SQLExecute('SELECT id_status FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
// отбираем список выполненных работ через счетчик записей, для этого передаем record_count в строку eSearchListWork
frmClientServiсeList.eSearchListWork.Text := SQLExecute('SELECT record_count FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
//клик кнопку поиска
frmClientServiсeList.bSearchListWork.Click;
end;
//**************************** Карточка заявки ***********************//
procedure frmAppl_OnShow (Sender: TObject; Action: string);
begin
frmAppl.cbNameClient.DbItemID := frmServiceCen.tgList.DbItemID;
frmAppl.eNameClient.Text := frmAppl.cbNameClient.Text;
frmAppl.eAdresClient.Text := SQLExecute('SELECT adresClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmAppl.eTelephonClient.Text := SQLExecute('SELECT telephonClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
frmAppl.mDescriptionATCsWords.Text := SQLExecute('SELECT DescriptionATCsWords FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmAppl.dtpDateApplcation.Text := SQLExecute('SELECT dateApplcation FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmAppl.dtmTimeApplication.Text := SQLExecute('SELECT timeApplication FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
// отбираем список выполненных работ через счетчик записей, для этого передаем record_count в строку eSearchListWork
frmClientServiсeList.eSearchListWork.Text := SQLExecute('SELECT record_count FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
//клик кнопку поиска
frmClientServiсeList.bSearchListWork.Click;
end;
Я чего-то не пойму... А нельзя ли вместо
frmComServiceList.eNameCompany.Text := SQLExecute('SELECT NameCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eStreetCompany.Text := SQLExecute('SELECT streetCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eHouseCompany.Text := SQLExecute('SELECT houseCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eFractionCompany.Text := SQLExecute('SELECT fractionCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eOfficeCompany.Text := SQLExecute('SELECT officeCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eTelCompany.Text := SQLExecute('SELECT telCompany FROM company WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eNameTypeOfEquipment.Text := SQLExecute('SELECT nameTypeOfEquipment FROM TypeOfEquipment WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eNameManufacturer.Text := SQLExecute('SELECT nameManufacturer FROM manufacturer WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eModel.Text := SQLExecute('SELECT Model FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eSerialNamber.Text := SQLExecute('SELECT SerialNamber FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.eEquipment.Text := SQLExecute('SELECT Equipment FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.mDescriptionATCsWords.Text := SQLExecute('SELECT DescriptionATCsWords FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.mExternalStatus.Text := SQLExecute('SELECT ExternalStatus FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.mDiagnostics.Text := SQLExecute('SELECT Diagnostics FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
frmComServiceList.cbStatusName.DbItemID := SQLExecute('SELECT id_status FROM servise WHERE id='+ frmServiceCen.tgList.sqlValue);
просто настроить кнопку с действием "показать запись"?..
полностью не получится, все равно придется часть скрипта использовать..
реньше все работало ок.. Иду пока путем исключения того что делал.. .
пологаю что что-то не так в связи таблиц или же в самой записи..
дело в том, что во всех случаях запись в таблицу servise точно происходит , а вот со связанными таблицами возникают проблемы..
первая запись в таблицу проблем не вызывает, при отображении карточки все поля отображаются.
при повторной записи, значения из связанныех таблицы не отображаются...
На форме frmServiceCen, грид (tgList) заполняется данными из таблицы servise, таким образом
frmServiceCen.tgList.sqlValue
вы получаете id из таблицы servise
Но как видно в данном скрипте, вы используете id записи из таблицы servise для поиска записи из таблицы client, что неправильно.
procedure clientServiseList_OnShow (Sender: TObject; Action: string);
begin
frmClientServiсeList.efirstNameClient.Text := SQLExecute('SELECT firstNameClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
Лучше объясните общими словами, какую проблему вы пытаетесь решить таким образом? Возможно я смогу предложить что-то попроще.
я не могу понять почему при создании первой записи через форму
frmReceivinOgEquipment
либо
frmNewApplication
в карточке оборудования все поля заполнены а при повторной записи поля с информацией из связанных таблиц не заполняются
Пожалуйста описывайте пошаговый процесс для демонстрации данной проблемы. Я не знаком с данным проектом, поэтому трудно понять, что конкретно нужно нажать, чтобы увидеть проблему.
записал видео моих действий так думаю будет понятней
На форме frmServiceCen, грид (tgList) заполняется данными из таблицы servise, таким образом
frmServiceCen.tgList.sqlValue
вы получаете id из таблицы servise
Но как видно в данном скрипте, вы используете id записи из таблицы servise для поиска записи из таблицы client, что неправильно.
procedure clientServiseList_OnShow (Sender: TObject; Action: string); begin frmClientServiсeList.efirstNameClient.Text := SQLExecute('SELECT firstNameClient FROM client WHERE id='+ frmServiceCen.tgList.sqlValue);
Лучше объясните общими словами, какую проблему вы пытаетесь решить таким образом? Возможно я смогу предложить что-то попроще.
а ну понятно
получается что при первой записи я получаю id 1 во всех связанных таблицах, потому первая запись отображается как нужно.. Но когда я делаю вторую или последующие записи то id связанных таблиц уже не совпадают..
то есть мне нужно вывести запись из связвнных таблиц где
id = id_client.servise т д
Лучше объясните общими словами, какую проблему вы пытаетесь решить таким образом? Возможно я смогу предложить что-то попроще.
есть таблицы
a b c
---------- ---------- ----------
aa bb cc
aaa id_a ccc
aaaa id_c cccc
запись происходит либо в b.a либо в b.c
в гриде отображается таблица b
мне нужно двойным кликом по гриду паказать запись скриптом в отдельной форме
либо
b
aa
aaa
aaaa
либо
b
cc
ccc
cccc
не знаю как проще это объяснить
Думаю проще всего сделать две формы и в зависимости от условий, вызывать необходимую форму с помощью скрипта методом Form.ShowRecord
для
b
aa
aaa
aaaa
Form2.ShowRecord('TableB', Form1.TableGrid1.dbItemID);
b
cc
ccc
cccc
Form3.ShowRecord('TableB', Form1.TableGrid1.dbItemID);
нашел у себя еще одну ошибку
у меня сохранение происходит в 2-е таблицы
A B
таблица
A
связана с таблицей
B
в скрипте сохранение происходило с начало в
A
потом в
B
, в результате таблица
A
не понимала с чем ей связываться...
ну вот и наткнулся на самую не понятную проблему
записывает и отображает все записи
SQLExecute('INSERT INTO servise (dateInServise, id_status, id_Company, id_TypeOfEquipment, id_manufacturer, model, serialNamber, equipment, externalStatus, descriptionATCsWords, id_clCompanyOrApp, record_count) VALUES ("'+tDate+'", "'+tStatusName+'", "'+tNameCompany+'", "'+ tNameTypeOfEquipment + '", "'+tNameManufacturer+'", "'+frmReceivinOgEquipment.eModel.Text+'", "'+frmReceivinOgEquipment.eSerialNamber.Text+ '", "'+frmReceivinOgEquipment.eEquipment.Text+ '", "'+ frmReceivinOgEquipment.mDescriptionATCsWords.Text+ '", "'+ frmReceivinOgEquipment.mExternalStatus.Text+ '", "'+tCompanyOrApp+'", "'+tCount+'")');
записывает но запись таблицы client не отображается хотя в самой таблице запись есть
SQLExecute('INSERT INTO client (firstNameClient, twoNameClient, lastNameClient, adresClient, telephonClient) VALUES ("'+frmNewApplication.eFirstNameClient.Text+'", "'+frmNewApplication.eTwoNameClient.Text+'", "'+frmNewApplication.eLastNameClient.Text + '", "'+ frmNewApplication.eAdresClient.Text + '", "'+ frmNewApplication.eTelephonClient.Text + '")');
SQLExecute('INSERT INTO servise (descriptionATCsWords, id_status, dateApplcation, timeApplication, dateInServise, id_clCompanyOrApp) VALUES ("'+ frmNewApplication.mDescriptionOfTheProblem.Text + '", "'+wStatusName+'", "'+wDate+'", "'+wTime+'", "'+qDate+'", "'+wCompanyOrApp+'");');
ShowRecord повесил пока в OnShow
запись в строчках от 324 по 429
вывод записи в строчках от 29 по 64
я думаю,что дело в отсутствии связывающего элемента
проблема решена
добавил ComboBox id_client в качастве связывающего эллемента двух таблиц
My Visual Database → Russian → Конфликт 2-х db
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi