![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите в чём ошибка [D6, ACCESS]
wirg © (2006-05-02 09:59:00)У меня имеется таблица Произволителей с полями ИД_ПРОИЗВОДИТЕЛЯ, ИМЯ_ПРОИЗВОДИТЕЛЯ и таблица моделей устройств с полями ИД_ПРОИЗВОДИТЕЛЯ и ИМЯ_МОДЕЛИ. Мне нужно, чтобы в таблицу моделей вносился идентификатор из таблицы производителей для названия моделей, в которых имеется название из поля ИМЯ_ПРОИЗВОДИТЕЛЯ.
// Proizvoditel
adoconnection1.Execute('create table Proizvoditel (ID_proizv autoincrement primary key, Name_proizv varchar(40), Sait varchar(70))');
// Model
adoconnection1.Execute('create table Model(ID_model autoincrement primary key, Name_model varchar(100), ID_proizv integer, Infirmation_mod varchar(50))');
Запрос вот такой
UPDATE model SET id_proizv = (select Proizvoditel.id_proizv from Proizvoditel, MODEL where Model.Name_model like '%trim(Proizvoditel.Name_proizv)%' and rownum = 1 );
Просит внести rownum
Что не так?
wirg (2006-05-02 14:03:00) [1]Какычку поставить не могу.
Процедура
procedure TForm1.Button2Click(Sender: TObject);
var
cat: OLEVariant;
proizv,id_proizv,id_model: string;
begin
//заносим производителей
qr1.SQL.Clear;
qr2.SQL.Clear;
//all proizv
qr2.SQL.Append('Select * from Proizvoditel');
qr2.Active:=true;
id_proizv:=inttostr(qr2.FieldValues['ID_proizv']);
proizv:='*'+qr2.FieldValues['Name_proizv']+'*';
qr2.First;
while not qr2.Eof do
begin
//????? как сдесь поставить кавычку чтобы работало
qr1.SQL.Append('Select ID_model From Model Where Name_model Like '+proizv+'');
qr1.Active:=true;
while not qr1.Eof do
begin
id_model:=inttostr(qr1.FieldValues['ID_model']);
adoconnection1.Execute('Update Model Set Id_proizv ='+id_proizv+' Where ID_model='+id_model+'');
qr1.Next;
end;
qr2.Next;
end;
end;
Sergey13 (2006-05-02 11:09:00) [2]2[8] Wirg (02.05.06 11:02)
Запрос из [2] Sergey13 © (02.05.06 10:09) - вполне можно принять за основу, если вместо '%trim(Model.Name_model)%'ты сможешь выделить часть названия, указывающую на производителя.
Wirg (2006-05-02 11:02:00) [3]записи заносятся в таблицу автоматически из текстовых конфигов компьютеров, в поле модели присутствует названия фирм производителей ИНтел и др, мне нужно занести в таблицу моделей идентификатор производителя. Число запросов значения не имеет главное, чтобы не руками, компов много.
Если можешь помоги или подскажи что-нибудь дельное?
Sergey13 (2006-05-02 10:52:00) [4]2 [6] wirg (02.05.06 10:44)
Какого производителя ты поставишь для модели С650? И почему?
wirg (2006-05-02 10:44:00) [5]А если в несколько запросов
sniknik (2006-05-02 10:38:00) [6]> Просит внести rownum
> Что не так?
поле в таблице с таким названием есть?
> какие ещё варианты могут быть(запросы)?
начинать изучать то что используеш, а не "брать нахрапом, авось пройдет".
Sergey13 (2006-05-02 10:35:00) [7]2[3] wirg (02.05.06 10:27)
>какие ещё варианты могут быть(запросы)?
Самому (или оператора посадить на это) ручками вбивать - исправлять ошибки проектировщика.
wirg (2006-05-02 10:27:00) [8]Запрос должен вставлять идентификатор производителя,
Model.Name_model =like %Proizvoditel.Name_proizv%. Если не реально такой запрос сделать, какие ещё варианты могут быть(запросы)?
Sergey13 (2006-05-02 10:09:00) [9]Кажется я не досмотрел запрос. В подзапросе таблицы MODEL не должно быть.
UPDATE model SET id_proizv = (select max(Proizvoditel.id_proizv) from Proizvoditel where Proizvoditel.ИМЯ_ПРОИЗВОДИТЕЛЯ like '%trim(Model.Name_model)%' );
Как то так, если я правильно понял задачу.
Sergey13 (2006-05-02 10:05:00) [10]
UPDATE model SET id_proizv = (select max(Proizvoditel.id_proizv) from Proizvoditel, MODEL where Model.Name_model like '%trim(Proizvoditel.Name_proizv)%' );
Но задача странная тем, что есть модели без производителя - такого, ИМХО, быть не должно.