Главная страница
    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.077 c
1-1098515698
PURGEN
2004-10-23 11:14
2004.11.07
Хочу удалить объект!!!!


14-1097772051
Rouse_
2004-10-14 20:40
2004.11.07
Нет, ну я балдю с подрастающего поколения...


9-1089914581
Ertong
2004-07-15 22:03
2004.11.07
DirectInput и размер EXE


3-1097053508
Belkova
2004-10-06 13:05
2004.11.07
запрос


14-1098027153
olookin
2004-10-17 19:32
2004.11.07
Универсализация или прагматичность?





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