Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка записи данных на сервер [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;
...
Только зачем здесь явная транзакция?


Наверх

Титульная страница Поиск, карта сайта Написать письмо