Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.031 c
1-1098936553
Babay
2004-10-28 08:09
2004.11.14
Два вопроса по Д8


3-1097914633
arick
2004-10-16 12:17
2004.11.14
Проблема в подключении TSQLConnection (dbExpress)


6-1094485928
Gera
2004-09-06 19:52
2004.11.14
Indy tcpClient и tcpServer


14-1098681277
[lamer]Barmaglot
2004-10-25 09:14
2004.11.14
Помогите с цветами...


3-1097573006
Aser
2004-10-12 13:23
2004.11.14
Помогите пожалуйста с SQL-запросом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский