Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

"Перезапись" таблиц   Найти похожие ветки 

 
Галинка ©   (2004-10-06 14:58) [0]

Как организовать презапись таблицы, после получения сообщения, о том что такая таблица уже существует.

Ситуация такая. Я в своей БД (Акцес) создаю таблицы с результатами расчета, для дальнейшего анализа. По умолчанию все имена таблиц имеют общую часть. Причем как таблицы с исходными данными, так и таблицы с результатами. Что-то вроде M44_Epic, M44_Punkty, Rez_M44_Epic, Rez_M44_Radiusy. Это М44 берется из названия главной исходной таблицы методом сору. (Вся заморочка с таблицами потому, что пользователь-заказчик мой привык на уровне ДОСа работать, когда все это было в отдельных файлах. Поэтому, для обеспечения, так сказать мягкого перехода, я сделала пока таблицы из тех самых  файлов. Чтобы им проще было. Но глобальную таблицу сделать буду. И выборку из нее обеспечу.) Так вот, при пересчете исходных таблиц, для которых уже есть результирующие, возникает, совершенно справедливо, ошибка, что таблицы с таким названием уже есть. Так вот вроде как и надо предусмотреть возможность,  для "сохранения", а фактически создания, таблиц с новым общем именем.  Но хочется сделать так как в ворде (по-моему), если возникает ошибка, приложение должно спросить их (таблицы) перезаписать или сохранить (читай создать) по др именем.

Буду рада любым советам.


 
Ольга   (2004-10-06 15:23) [1]

Для начала попытайтель четко сформулировать вопрос, не вдаваясь в детали.


 
Sergey13 ©   (2004-10-06 15:30) [2]

Присоединяюсь к [1], но из того что я понял (или не понял 8-) мне кажется "Не правильной дорогой идете, товарищи!"


 
Галинка ©   (2004-10-06 15:45) [3]

Конкретно... Ну что же...

Так вот, при пересчете исходных таблиц, для которых уже есть результирующие, возникает, совершенно справедливо, ошибка, что таблицы с таким названием уже есть. Так вот вроде как и надо предусмотреть возможность,  для "сохранения", а фактически создания, таблиц с новым общем именем.  Но хочется сделать так как в ворде (по-моему), если возникает ошибка, приложение должно спросить их (таблицы) перезаписать или сохранить (читай создать) по др именем.


 
Галинка ©   (2004-10-06 15:50) [4]

Пока надума что-то вроде так:
var
TekTabName, NewTabName:string;

begin
****************{Создание таблицы}************************
try
ADOCommand.ComandText:="CreateTable TabName ...."
ADOCommand.Execute;
exception
on E:EOleException do
 begin
  if (MessageDlg("Такая таблица %TABLENAME% существует!"+#13+#10+
                 "Записать данные в другую таблицу?",
                 mtWarning, [mbYes, mbNo], 0)
      = mrYes) then
   if NewTabNameDlg.ShowModal=mrOK then                 {Диалог на новое имя}
    begin
     NewTabName:=NewTabNameDlg.Edit1.Text;
     ADOCommand.ComandText:="CreateTable TabName"+NewTabName+"...."
     ADOCommand.Execute;
     TekTabName:=NewTabName;
    end
  else
   begin
    ADOCommand.ComandText:="Delete from TabName ...."
    ADOCommand.Execute;
    TekTabName:=TabName;
   end;
 end;
end;
*************{Процедура заполнения таблиц}*********************
{ производится уже с конкретным именем таблицы  }

end;


 
Sergey13 ©   (2004-10-06 15:55) [5]

2Галинка ©
А зачем результаты расчета сохранять, да еще в отдельных таблицах? Сама же потом запутаешься. Может (уж если шибко сохранять надо) просто добавить идентификатор расчета (дата например или еще чего) в одну таблицу. И дополнять ее. ИМХО ты не "мягкий переход" обеспечиваешь, а геморой себе наживаешь на будущее.


 
Галинка ©   (2004-10-06 16:11) [6]

Для Сергея.
На счет гемороя - это я уже начинаю понимать. Но раз начала... Просто понимаешь, конечным продуктом расчета, является не таблица, а схема, построенная на основе данных выбранных, из результирующих таблиц. Результирующих таблиц две, в одной собраны параметры эпицентров (назовем их так), а в другой, подчиненной, радиусы изосйест, посчитанных для этих эпицентров. По этим радиусам и будут строиться схемы. Я пыталась автоматизировать их выбор в соответствии со строгими условиями, но заказчик сказал, что эта часть алгоритма не формализована, и выбирают они методом научного тыка. Поэтому и пришлось сделать две связанные таблицы (для облегчения просмотра). И всплывающее меню к ним, для выбора конкретного эпицентра, а так же для задания остальных его параметров (таких как географическое положение). Вот...


 
Sergey13 ©   (2004-10-06 16:17) [7]

2[6] Галинка ©   (06.10.04 16:11)
>На счет гемороя - это я уже начинаю понимать. Но раз начала...
то надо геморой усиливать до хронической формы? 8-) Почему бы тогда не писать в постоянные таблицы с идентификатором расчета? Все таки лучше будет. А для юзера это вообще фиолетово. Он и не догадается про это. 8-)


 
Mike Kouzmine ©   (2004-10-06 16:22) [8]

Перед сохранением новых данных старые удалять? А таблицы оставить.


 
sniknik ©   (2004-10-06 16:44) [9]

ADOConnection.GetTableNames может помочь, не доводить до ексепта... тем более он может быть и по другому поводу.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1098328595
Mitka
2004-10-21 07:16
2004.11.07
Как удалять динамически создаваемые кнопки?


1-1098697952
Artemius
2004-10-25 13:52
2004.11.07
Как определить путь к программе?


6-1093842961
Алексей
2004-08-30 09:16
2004.11.07
Помогите с сокетами. ClientSocket, ServerSocket


4-1096569449
Alekc
2004-09-30 22:37
2004.11.07
Передача данных по ИК-порту


14-1098333339
wisekaa
2004-10-21 08:35
2004.11.07
Поздравляю всех с 35 летием Всемирной Паутины





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский