Topic: Процедура копирования таблицы и отображения в гриде

Добрый вечер!
Помогите со следующей проблемой, написан запрос который работает в SQLlitestudio, но при переносе данного запроса в процедуру запрос не выполняется а дает сообщения о ненахождении ключа условия.

INSERT INTO Ast (id_Nomenkl, number, price, NDS, id_score)
SELECT Specification.id_Nomenkl, specification.number, specification.price, specification.NDS, score.id
FROM specification
JOIN Dogovor ON Specification.id_Dogovor=dogovor.id
JOIN Score ON Score.id_Dogovor=Score.id
WHERE id_Dogovor='+frmScore.dogovor.sqlValue+' AND name='+frmScore.spec.sqlValue

Сообщение об ошибке:
ambuguous column name: id_Dogovor

Re: Процедура копирования таблицы и отображения в гриде

glkonst79 wrote:

Добрый вечер!
Помогите со следующей проблемой, написан запрос который работает в SQLlitestudio, но при переносе данного запроса в процедуру запрос не выполняется а дает сообщения о ненахождении ключа условия.

INSERT INTO Ast (id_Nomenkl, number, price, NDS, id_score)
SELECT Specification.id_Nomenkl, specification.number, specification.price, specification.NDS, score.id
FROM specification
JOIN Dogovor ON Specification.id_Dogovor=dogovor.id
JOIN Score ON Score.id_Dogovor=Score.id
WHERE id_Dogovor='+frmScore.dogovor.sqlValue+' AND name='+frmScore.spec.sqlValue

Сообщение об ошибке:
ambuguous column name: id_Dogovor

это значит, что у Вас есть несколько таблиц с такими полями
нужно указать точное имя
Score.id_Dogovo

Re: Процедура копирования таблицы и отображения в гриде

Спасибо!!!
При выполнении Вашего совета условие работает, но только по одному условию.
А как заставить срабытывать при 2 условиях?
Когда ставлю: +' AND Specification.name='+frmScore.spec.Text - при выполнении дает ошибку на 2 (в комбо текст - Спецификация 2)
А если ставлю: +' AND Specification.name='+frmScore.spec.sqlValue - вроде выполняется без ошибок, но грид не заполняется.
Прикладываю проект, прошу посмотрите в чем я косячу.
Счет вызывается через основную форму - словарь (нижний правый угол) - вкладка счет

Post's attachments

Attachment icon Report.zip 390.3 kb, 198 downloads since 2021-01-10 

4 (edited by sibprogsistem 2021-01-10 14:35:44)

Re: Процедура копирования таблицы и отображения в гриде

INSERT INTO - это создать запись
Вам нужно получить, значит нужно использовать SELECT
так же не понятна связь с таблицами Dogovor и  Score - так как их изначально в запросе нет..

для такой операции используйте действие Saql Запрос  в свойствах кнопки

справка http://myvisualdatabase.com/doc_ru/butt … query.html
 
Ваш запрос будет выглядеть примерно  так

SELECT 
Specification.id_Nomenkl, 
specification.number, 
specification.price, 
specification.NDS, score.id 
FROM                            
specification 
JOIN               
Dogovor ON Specification.id_Dogovor=dogovor.id,  
Score ON Score.id_Dogovor=Score.id 
WHERE 
Score.id_Dogovor={dogovor} AND Specification.name={spec}  
Post's attachments

Attachment icon Report.rar 37.27 kb, 182 downloads since 2021-01-10 

Re: Процедура копирования таблицы и отображения в гриде

Добрый вечер!
Но мне как раз и нужно записать данные в существующую таблицу. Просто как правило кнопка и нужна при количестве записей более 5.

Re: Процедура копирования таблицы и отображения в гриде

glkonst79 wrote:

Добрый вечер!
Но мне как раз и нужно записать данные в существующую таблицу. Просто как правило кнопка и нужна при количестве записей более 5.

к сожалению у меня не получается понять суть запросов, потому лишь дам Вам подсказки

procedure frmScore_Button8_OnClick (Sender: TObject; var Cancel: boolean);
begin
   //SQLExecute('INSERT INTO база_данных(поле_1, поле_2)VALUES(значение_1,значение_2)'); // укажите свои значения для записи информации в БД
// этот запрос обращается сразу к таблице
   frmScore.TableGrid1.dbSQL:='SELECT Specification.id_Nomenkl, specification.number, specification.price, specification.NDS, score.id '
   +'FROM specification JOIN Dogovor ON Specification.id_Dogovor=dogovor.id JOIN Score ON Score.id_Dogovor=Score.id WHERE Score.id_Dogovor='+frmScore.dogovor.sqlValue+' AND Specification.name='+frmScore.spec.sqlValue;
   frmScore.TableGrid1.dbSQLExecute;
end;

 
подробнее http://myvisualdatabase.com/doc_ru/prop … tring.html