Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Внизобменном данных Найти похожие ветки
← →
kirilllius (2004-10-13 22:56) [0]Знатоки, помогите с обменном данных. Я работаю с Access через ADBO.
У меня есть таблицы
Таблица1
ID – счетчик, ключевое
Strana – текстовое
Таблица2
ID – счетчик, ключевое
Strana – длинное целое, индексированное допускаются совпадения
Gorod – текстовое
Polozhenie – длинное целое, индексированное совпадения не допускаются
Таблица3
ID – счетчик, ключевое
Gorod – длинное целое, индексированное допускаются совпадения
…. – текстовое
…. – текстовое
Таблица1 связана с Таблицой2
Таблица1.ID-> Таблица2.Strana отношение один ко многому
и Таблица2 связана с Таблицой3
Таблица2.Polozhenie-> Таблица3.Gorod отношение один ко многому
Передо мной стоит задача, поменять в таблице Таблица2 две записи местами, так, чтобы не нарушить связь. Я делаю следующее.
Polozhenie0:=Таблица2.FieldByName(‘Polozhenie’).AsString;
Gorod0:= Таблица2.FieldByName(‘Gorod’).AsString;
Таблица2.Prior;
Polozhenie1:=Таблица2.FieldByName(‘Polozhenie’).AsString;
Gorod1 := Таблица2.FieldByName(‘Gorod’).AsString;
Таблица2.Edit;
Таблица2.FieldByName(‘Polozhenie’).AsString:="-1";//т.к. такого индекса нет
Таблица2.FieldByName(‘Gorod’).AsString:=Gorod0;
Таблица2.Post;
Таблица2.Next;
Таблица2.Edit;
Таблица2.FieldByName(‘Polozhenie’).AsString:=Polozhenie1;
Таблица2.FieldByName(‘Gorod’).AsString:=Gorod1;
Таблица2.Post;
Таблица2.Prior;
Таблица2.Edit;
Таблица2.FieldByName(‘Polozhenie’).AsString:=Polozhenie0;
Таблица2.Post;
После выполнения меняется местами только поля Gorod, а вод связь не меняется
т.е. если до кода было
Таблица2.Gorod (Москва) -> Таблица3....(1,2,3)
Таблица2.Gorod (Ленинград)-> Таблица3....(4,5,6)
то после кода
Таблица2.Gorod (Ленинград)-> Таблица3....(1,2,3)
Таблица2.Gorod (Москва) -> Таблица3....(4,5,6)
А нужно
Таблица2.Gorod (Ленинград)-> Таблица3....(4,5,6)
Таблица2.Gorod (Москва) -> Таблица3....(1,2,3)
Подскажите, как это делать
← →
ЮЮ © (2004-10-14 02:54) [1]>После выполнения меняется местами только поля Gorod, а вод связь не меняется
Так ты в коде это и делаешь - переименовываешь Москву в Ленинград, а Ленинград в Москву :)
Чтобы "поменять в таблице Таблица2 две записи местами", нужно изменить только поле Polozhenie (если, конечно, именно оно определяет "положение" записи в таблмце, т.е. упорядочмвает записи в нужном тебе виде), при этом по этому полю должен быть индекс и он должен быть активным - именно активный индекс определяет порядок следования записей в Таблица2.
З.Ы. После
Таблица2.Post;
Таблица2.Next;
отредактированная запись может оказаться и после той, которую ты ожидал увидеть, написав Таблица2.Next. Перемещаться по таблице можно только по Locate
← →
kirilllius (2004-10-14 11:26) [2]>>После выполнения меняется местами только поля Gorod, а вод связь не меняется
>Так ты в коде это и делаешь – переименовываешь
> Москву в Ленинград, а Ленинград в Москву :)
Да, я это и делаю, но я перемещаю еще и записи в поле Polozhenie, а они не перемещаются, они остаются на месте, почему, не могу понять?
>Чтобы "поменять в таблице Таблица2 две записи местами",
>нужно изменить только поле Polozhenie (если, конечно,
>именно оно определяет "положение" записи в таблмце,
>т.е. упорядочмвает записи в нужном тебе виде),
>при этом по этому полю должен быть индекс и он
>должен быть активным - именно активный индекс
>определяет порядок следования записей в Таблица2.
Я пытался так сделать, но Таблица2 связана с Таблица1 и поэтому Таблица2 сортируется по связанному полю в частности по полю Strana, а вот как добавить еще одно поле сортировки я не могу понять. В IndexFieldNames уже стоит поле Strana, а когда я добавляю туда через ; еще одно поле, то происходит разрушение связи между таблицами.
Я добавлял уже и Таблица2.Sort:=’Polozhenie’; но это ни к чему не привело, хотя отсортировало только при запуске программы, а затем после перемещения по Таблица1 все сбросилось и связь между таблицами разорвалась, т.е. записи из Таблица1 стали соответствовать все записи из Таблица2.
>отредактированная запись может оказаться и после той,
>которую ты ожидал увидеть, написав Таблица2.Next.
>Перемещаться по таблице можно только по Locate
Спасибо, а это учту.
← →
ЮЮ © (2004-10-15 02:55) [3]смотри
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1097758099&n=1
особенно [6]
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c