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

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

Подскажите в чём ошибка [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)%' );
Но задача странная тем, что есть модели без производителя - такого, ИМХО, быть не должно.


Наверх

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