![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка записи данных на сервер [D5, MSSQL]
чайник © (2003-11-10 09:28:00)
Добрый день, уважаемые мастера, проблема при записи данных в таблицу на сервере.Вставляю запись из формы проекта через TEdit и комбобоксы из полей таблиц - справочников. Выдает ошибку конвертации данных. Хотя поля одинакового типа и в справочнике и в той таблице куда заношу. Код следующий:
procedure Tgl.SpeedButton7Click(Sender: TObject);
var tsql:string;
begin
f1.Dat1.StartTransaction;
try
tsql:="insert into vid_zaim (kod_kl,kod_z) values("+ """+D_kl.DataSet.FieldValues["kod"]+"",""+D_zai.DataSet.FieldValues["kod"]+"")";
Q1.SQL.Clear;
Q1.SQL.Add(tsql);
Q1.Prepared:=True;
Q1.ExecSQL;
f1.Dat1.Commit;
except
f1.Dat1.RollBack;
end;
end;
Ошибка следующая: Invalid variant type conversion.
Спасибо
АлексейК (2003-11-10 12:42:00) [1]
да я только начинаю писать под клиент сервер поэтому и не совсем еще разобрался, трансакцию наверное лучше при выходе из меню обработки данных сделать? один раз...
Лучше ее вообще пока не трогать, особенно на клиенте. Сервер сам будет работать с тразакциями. А вот когда разберешся, то и вопроса не будет возникать, начинать надо ли тразакцию явно в данном случае и каккие оперции в ней будут присутвовать.
Silver Alex (2003-11-10 09:45:00) [2]
перпиши запрос на типа
"insert into vid_zaim (kod_kl,kod_z)
values( :kod_kl, :kod_z) ) "
а перед исполнением пиши
parameters.parambyname("kod_kl").value:=D_kl.DataSet.Fieldbyname("kod").Asinteger;// или какой там тип если строка , то AsString
//так же и другой параметр
parameters.parambyname("kod_zэ).value:=D_zai.DataSet.Fieldbyname("kod_z").Asinteger
вобщем попробуй так :))
чайник (2003-11-10 09:44:00) [3]
Спасибо, все получилось..
чайник (2003-11-10 09:41:00) [4]
да я только начинаю писать под клиент сервер поэтому и не совсем еще разобрался, трансакцию наверное лучше при выходе из меню обработки данных сделать? один раз...
asp (2003-11-10 09:38:00) [5]
...
Q1.SQL.Text:= "INSERT INTO VID_ZAIM " +
"(KOD_KL, KOD_Z) " +
"VALUES(:KOD_KL, :KOD_Z)";
Q1.ParamByName("KOD_KL").AssignFieldValue(D_kl.DataSet.FieldByName("KOD"), D_kl.DataSet.FieldByName("KOD").Value);
Q1.ParamByName("KOD_Z").AssignFieldValue(D_zai.DataSet.FieldByName("KOD"), D_zai.DataSet.FieldByName("KOD").Value);
try
f1.Dat1.StartTransaction;
Q1.ExecSQL;
f1.Dat1.Commit
except
f1.Dat1.Rollback
end;
...
Только зачем здесь явная транзакция?