Цитата(ТоляМБА @ 6.4.2015, 18:03) | Выполнение запроса на изменение данных: или DataModule1->ADOQuery2->Execute; или DataModule1->ADOQuery2->ExecSQL;
а чему у тебя равен DataModule1->ADOQuery2->SQL->Text; ? |
Сам запрос работает. Текст sql сохраняется в отдельном файле, что бы легче было редактировать.
Код | DataModule1->ADOQuery2->SQL->Clear(); DataModule1->ADOQuery2->Parameters->Clear(); DataModule1->ADOQuery2->SQL->LoadFromFile(ExtractFilePath(Application->ExeName)+ "\\sqlquery\\forinsert.qey") ;
DataModule1->ADOQuery2->Parameters->ParamByName("name_mpaa")->DataType = ftString; DataModule1->ADOQuery2->Parameters->ParamByName("name_mpaa")->Direction = pdInput; if (RzComboBox2->Text.IsEmpty() == false) DataModule1->ADOQuery2->Parameters->ParamByName("name_mpaa")->Value = RzComboBox2->Text ; else DataModule1->ADOQuery2->Parameters->ParamByName("name_mpaa")->Value = "NULL";
DataModule1->ADOQuery2->Parameters->ParamByName("name_typ")->DataType = ftString; DataModule1->ADOQuery2->Parameters->ParamByName("name_typ")->Direction = pdInput; DataModule1->ADOQuery2->Parameters->ParamByName("name_typ")->Value = RzComboBox1->Text ;
DataModule1->ADOQuery2->Parameters->ParamByName("nazva")->DataType = ftString; DataModule1->ADOQuery2->Parameters->ParamByName("nazva")->Direction = pdInput; DataModule1->ADOQuery2->Parameters->ParamByName("nazva")->Value = RzEdit1->Text ;
DataModule1->ADOQuery2->Parameters->ParamByName("nazva_original")->DataType = ftString; DataModule1->ADOQuery2->Parameters->ParamByName("nazva_original")->Direction = pdInput; DataModule1->ADOQuery2->Parameters->ParamByName("nazva_original")->Value = RzEdit2->Text ;
DataModule1->ADOQuery2->Prepared = true; try { DataModule1->ADOQuery2->ExecSQL(); } catch (EADOError& e) { MessageDlg("Не вдалося записати дані в базу!!!", mtError, TMsgDlgButtons() << mbOK, 0); return; }
|
Вот сам файл forinsert.qey :
Код | USE emty_base;
DECLARE @ID_MPAA_ INT DECLARE @NAME_MPAA_ nvarchar(50) DECLARE @NAME_TYP_ nvarchar(30)
SET @NAME_MPAA_ = :name_mpaa SET @NAME_TYP_ = :name_typ
SELECT @ID_MPAA_ = id_mpaa FROM reference_mpaa WHERE name_mpaa = @NAME_MPAA_
DECLARE @NAZVA_ nvarchar(70) DECLARE @NAZVA_ORIGINAL_ nvarchar(70) SET @NAZVA_ = :nazva SET @NAZVA_ORIGINAL_ = :nazva_original
INSERT film (nazva, nazva_original, id_mpaa) VALUES (@NAZVA_, @NAZVA_ORIGINAL_, @ID_MPAA_ )
|
Проблема в том, что все это конкретные переменные моей программы и передаются в конкретные локальные переменные SQL-запроса. А мне кроме того нужно передавать списки значений, количество которых зарание неизвестно. Для етого я и думал использовать тип Table, закинуть туда список значений и потом уже его обробатывать. Вот только как перенести даные с того же EditListBox в мою таблицу ума не преложу???
|