![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка записи в базу [D6, dBase, FoxPro]
Tomb © (2002-12-02 11:49:00)Уважаемые мастера, есть такая ситуация.
Имеем 2 таблицы например tbl1 с полями
a - int
b - int
c - date
и tbl2 с полями
d - int
e - date.
Необходимо вставить из таблицы tbl2 в таблицу tbl1 данные, при этом в поле a необходимо вставить значение из переменной f. Пишу запрос
"insert into tbl1 select "+IntToStr(f)+",d,e from tbl2"
Выдается ошибка "Type mismatch in expression".
Где руки править?
FreeLancer (2002-12-02 12:41:00) [1]
> Нет, f - это обычная переменная в программе. Т.е. получается,
> что поля b и c перекрываются полями d и e, а в поле а необходимо
> вставить значение из обычной переменной.
В таком случае:
INSERT INTO tbl1(a,b,c) VALUES (IntToStr(f), (SELECT d FROM tbl2), (SELECT e FROM tbl2))
ЮЮ (2002-12-02 12:19:00) [2]insert into tbl1 select 1,d,e from tbl2
может 1 получается не int? Хотя трудно прдедположить, что оно не конвертнётся в int.
Используй параметр:
"insert into tbl1 select :a,d,e from tbl2"
query.Params[0].Value := f;
Tomb (2002-12-02 12:15:00) [3]Нет, f - это обычная переменная в программе. Т.е. получается, что поля bи cперекрываются полями dи e, а в поле анеобходимо вставить значение из обычной переменной.
FreeLancer (2002-12-02 11:59:00) [4]То есть поле №1 (IntToStr(f)) выбирается динамически? Что ж если таковое есть в таблице и если оно int, все будет работать.