powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Переименование таблицы программным путём
25 сообщений из 26, страница 1 из 2
Переименование таблицы программным путём
    #32449892
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такакя проблема. Моя программа написана на VB6, использует Access97 базу.
Как мне переименовать таблицу в моей базе програмным путём? Просто много юзеров и ручками у всех исправлять не получится.

Заранее очень благодарна.
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32449940
Alex_2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim objTable As DAO.TableDef

For Each objTable In CurrentDb.TableDefs
    If objTable.Name =  "MyTable"  Then
        objTable.Name =  "Table1" 
    End If
Next
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32449966
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex, вы гений и ваша программа совершенно замечательная! Просто и гениально. Спасибо вам огромное-преогромное! You made my day. :))
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32449992
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы молодец Алекс, только я сделала ещё короче, может кому-то пригодиться. Я напрямую переименовываю мою таблицу, чем экономлю время и обрабатываю ошибку, если чего. Но всё с вашей подачи.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Sub RenameTable(stableName_old As String, stableName_new As String)
Dim objTable As TableDef
On Error GoTo Handler

glob_LocalAccessDatabaseDAO.TableDefs(stableName_old).name = stableName_new

Exit Sub

Handler:
   On Error Resume Next
   On Error GoTo  0 

End Sub
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450005
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Девушка, позволю себе поперхнуться глядя на то что вы называете обработкой ошибки. А в остальном нормально.

Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450067
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне конечно жаль вас, юноша, что вы так поперхнулись, но чем вам моя обработка не угодила? Я получаю точно то, чего я хочу: всё отабатывает и тихо делает своё дело. Я делаю resume next и дальше сразу же чищу ошибку. Может эта вторая строка вас смутила? У меня были мысли, что может ошибка уже почищена после resume next, но неохота было проверять.
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450107
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Девушка, благодарю покорно за трогательную заботу о моем здоровье, но позволю себе заметить что:
1.Если уж использовать On Error Resume Next, то ставится он в начале процедуры, вмето посылания на хендлер.
2.On Error GoTo 0 не чистит ошибку а отключает активный обработчик. Очистка свойств обьекта Err происходит вызовом Err.Clear
3.При выходе из процедуры нет смысла ее чистить вообще.
4. Все отрабатывает тихо или неотрабатывает , тоже тихо. Т.е. если в ьтот момент по каким либо причинам прервется связь с базой , вы будете прибывать в блаженном неведении относительно происшедшего.

Спасибо за внимание. Я кстати уже давно не юноша ;)


Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450119
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дорогой Уже не юноша,
Не хотелось ввязываться в препирания, но незаметно для себя втянулась.

1.Если уж использовать On Error Resume Next, то ставится он в начале процедуры, вмето посылания на хендлер.
А вот и неправда, зависит от вашего стиля письма. Наоборот рекомендованно посылать всех на хендлер, а там с ними разбираться. Ежу понятно, что это намного грамотней. Там и номера ошибочек и всё что захотите при желании вписываете и обратно в код. А куда вы иначе пихаете обработку определённого номера ошибки? Ищи-свищи? То-то же.

2.On Error GoTo 0 не чистит ошибку а отключает активный обработчик. Очистка свойств обьекта Err происходит вызовом Err.Clear
Какая разница, в данном случае для меня не критично

3.При выходе из процедуры нет смысла ее чистить вообще.
Ну это полный шедевр. Ну так хотя бы on error goto 0 поставили.
А что у вас разве не стоит обработка в каждой процедуре? Если не то и но то,
она ж вывалится на верний уровень обработки и завалится там, если конечно у вас не стоит намертво resume next в начале каждой вашей процедуры

4. Все отрабатывает тихо или неотрабатывает , тоже тихо. Т.е. если в этот момент по каким либо причинам прервется связь с базой , вы будете прибывать в блаженном неведении относительно происшедшего.
У меня если нету связи с базой, то это выяснится на гораздо более раннем этапе заведения программы. И она просто даст сообщение и отрубится.
И вообще, если связи нету, то меня страшно волнует переименование таблицы.
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450125
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стихийно продолжаем. Вы, как я вижу тоже не спите.
Ну что ж:

автор1.Если уж использовать On Error Resume Next, то ставится он в начале процедуры, вместо посылания на хендлер.
А вот и неправда, зависит от вашего стиля письма. Наоборот рекомендованно посылать всех на хендлер, а там с ними разбираться. Ежу понятно, что это намного грамотней. Там и номера ошибочек и всё что захотите при желании вписываете и обратно в код. А куда вы иначе пихаете обработку определённого номера ошибки? Ищи-свищи? То-то же.
авторКакая разница, в данном случае для меня не критично

Вы невнимательны. И от стиля "письма" это не зависит. Существует понятие хорошей практитки.
Именно для данного случая не имее никакого смысля делать лишний переход на метку только для того чтобы продолжить обработку на следующем операторе(которого кстати и нет) и тут же отключить обработчик.



автор3.При выходе из процедуры нет смысла ее чистить вообще.
Ну это полный шедевр. Ну так хотя бы on error goto 0 поставили.
А что у вас разве не стоит обработка в каждой процедуре? Если не то и но то,
она ж вывалится на верний уровень обработки и завалится там, если конечно у вас не стоит намертво resume next в начале каждой вашей процедуры
В каждой? Нет, не стоит.On Error Resume Next практически никогда не использую. Потому что для меня важна каждая строка. Должно отработать все или ничего(применительно к коду одного метода). С транзакциями случайно не доводилось работать?
Дело в том что в многоуровневых приложениях зачустую метод какого либо класса не имеет понятия что делать с ошибкой и правильно ее обработать просто не в состоянии. В этом случае ошибка отдается наверх "как есть" и так до того уровня на котором ее перехватит СООТВЕТСТВУЮЩИЙ обработчик.

авторУ меня если нету связи с базой, то это выяснится на гораздо более раннем этапе заведения программы. И она просто даст сообщение и отрубится.
И вообще, если связи нету, то меня страшно волнует переименование таблицы.

Связь с базой может быть оборвана на любом этапе, в любую секунду, к примеру драйвер отрубится. И если вас не волнует выполнится код или нет, зачем его писать в таком случае?


Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450635
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Madama
Мало того ,что Ваш обработчик ошибок бессмысленен, так он еще и содержит "маленькую" логическую ошибку,которая может привести к очень большим проблемам.
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450701
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует понятие хорошей практитки.
Именно для данного случая не имее никакого смысля делать лишний переход на метку только для того чтобы продолжить обработку на следующем операторе(которого кстати и нет) и тут же отключить обработчик.
Ха-ха-ха! Имеется ввиду как стиль письма, а не одна строчка кода конечно же. Простите, думала, что для вас это очевидно.

Связь с базой может быть оборвана на любом этапе, в любую секунду, к примеру драйвер отрубится. И если вас не волнует выполнится код или нет, зачем его писать в таком случае?
Правильно, и не пишите, вдруг прервётся связь с базой? Это ж всегда может произойти! Надо просто прекратить писать все коды, закрыть эту лавочку и разогнать всех программеров нафиг. А если по серьёзному, то не волнует меня по одной простой причине, что мой код выполнится в любой следующий раз, когда юзер загрузиться. Что так кипятиться? Неужели вы так уж плохо обо мне думаете?

А вообще-то я тут не собираюсь претендовать на всезнайство
и меряться писюнами. Хотя бы по одной простой причине, что такого не имею. А то бы непременно померилась!

Спокойной всем ночи
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32450815
KostyaSPB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мадама. А как вы узнаете, что ваша процедура переименовала необходимую вам таблицу на новое имя? Может какой нибудь умный пользователь уже это сделал за вас, но не на то имя, которое вам надо!!
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32451484
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 мадама
Не вижу смысла далее с вами препираться, разговор слепого с глухим. Просто желаю вам чаще прислушиваться к советам окружающих.
Если вы свято верите что в том что написали есть смысл, что ж, удачи.

Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32451898
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Косте
Ну неужели вы думаете, что мой пользователь будет ходить и ковыряться а моих таблицах, сколько их там не есть, 200 и более и переименовывать их? Канадцы - народ дисциплинированный и как правило таких вещей не делают . А если он и займётся этим неблагодарным для него занятием, программа на его машине просто не будет правильно работать и он же первый прибежит ко мне с мольбами подчинить её. Кому охота делать что-либо во вред себе?

Магнусу
Не сомневаюсь, что парень вы толковый и у вас всё получиться.
И вправду получилось склочновато. Не мой стиль. Но зацепилась и ,как говориться, поехало!
А советы окружающих я люблю, что в этом форуме и ценю со страшной силой - советы окружающих, что же ещё. И с огромной благодарностью воспринимаю мнения, подкреплённые кодом. Но никогда бы не позволила себе поперхнуться или высокомерно издеваться над чужой ошибкой. Чего и вам желаю.
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32451916
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 мадама
Вы сами себе противоречите. Весь топик пытаетесь доказать что правы а теперь "советы окружающих я люблю".
Я может и выдал начальный "совет" в несколько грубой форме, ну что ж, уж больно меня задела ваша "обработка". А вы вместо того чтобы послушать что говорят люди и научится делать эту самую обработку правильно - гнете свое.
Хотите проимер? Изовльте.
Что бы сделал я..
В данномй процедуре имее всегоодин вызов, поэтому не мудрствуя лукаво вывводим сообщение подобного содержания: "Произошла ошибка при переименовании таблицы.". Больше пользователю ничего не нужно. А саму ошибку с подробностями вплоть до номера строки пишем в лог.





Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32451951
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немогу согласиться. При данном алгоритме ошибка будет всегда. Процедура отрабатывает каждый раз при загрузке аппликации.Таблица переименуется один-единственный раз, самый первый. Все последующие разы это будет ошибка, так как программа будет пытаться обратитьсяч к таблице, которой уже нет, чтобы переименовать её. И нафига мне её писать в лог? И нафига пользователю знать об этом? Регулярно меняется структура базы, у меня всё наработанно.(Кроме переименования таблицы, но сейчас и это есть) Меняются поля, добавляютя, убавляются, меняюся свойства. Всё программным путём. Куча юзеров. Юзер об этом и знать не ведает. Это не бог весть какая высшая математика. Тестирую сначала на моей машине, потом посылаю автоматический upgrade всем юзерам.
Да, есть ошибки, которые нужно ловить и которые нужно наверное писать в лог и выдаваь о них мессижи. Но не в данном конкретном случае.

Спасибо anyway
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32451959
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что "значит При данном алгоритме ошибка будет всегда"?
У вас что имя таблицы жестко прописано?
Вы програмно меняете стуктуру базы?
А не проще ли посылать скрипт для этого?

Ладно замнем. Мы друг друга не понимаем.


Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32452010
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня имя таблицы передаётся в аргументах процедуры. Новое и старое. Привожу ещё раз.
Код: plaintext
Public Sub RenameTable(stableName_old As String, stableName_new As String)


Да , я програмно меняю структуру базы. Не всю конечно. По мере надобности. А что в этом плохого?

А какой скрипт проще посылать? Можете please пояснить?
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32452096
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 мадама
Проблема не в том ,что Вы "коряво" делаете обработку ошибки, а в том что делаете это не правильно.
Посмотрите внимательно на свой код и задайте вопрос Сколько раз выполнится оператор
Код: plaintext
On Error GoTo  0 
?
Правильно, ни разу. А это значит , что по при возврате из подпрограммы
в точку вызова будет продолжать действовать установка
Код: plaintext
On Error Resume Next
Т.е фактически Вы полностью отключили перехват ошибок.А это чревато последствиями.
Кстати , недавнее отключение электричества по всей Канаде - это не результат работы Вашей программы ?
Удачи
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32452111
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых я на последней строчке и не настаивала, а наоборот написала, что неохота проверять . Во-вторых никуда resume next не пойдёт, потому что во всех до одной процедурах у меня стоит обработка (не resume next, это только для отдельных случаев) и она перехватит контроль. Код надо рассматривать в общем контексте. Поскольку контекста вы не знаете, а знаю я, могу точно сказать, что код свою функцию выполняет.
Ну и напоследок сознаюсь, да это я отрубила в Канаде всё электричество. Дело было вечером, делать было нечего.
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32452119
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> могу точно сказать, что код свою функцию выполняет.
Выполнять то он выполняет,спору нет. Только что будет после того ,как Вы попытаетесь переименовать таблицу ,которой в базе нет-одному богу известно.
Впрочем ,мне все равно. Слава богу ,я не живу в Канаде
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32452129
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что будет после того ,как Вы попытаетесь переименовать таблицу ,которой в базе нет-одному богу известно
А вы попробуйте и вам будет известно тоже. У всех работает, никто ещё не пожаловался. Не надо драматизировать.

Слава богу ,я не живу в Канаде
Я рада за вас. Надеюсь нас разделяет хотя бы океан!
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32464705
мадама
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Магнус, ты меня уел. resume next лучше всё таки ставить в начале процедуры. Это в другом куске кода и по другому поводу, но иначе хреново. Поднимаю лапки кверху !
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32464779
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был VIG, я давно сдался :).

Magnus
...
Рейтинг: 0 / 0
Переименование таблицы программным путём
    #32464921
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно я еще немного поглумлюсь?
Мадам, ваша изначальная конструкция
Код: plaintext
1.
2.
3.
4.
5.
6.
On Error GoTo Handler
......
Handler:
   On Error Resume Next
   On Error GoTo  0 
End Sub

ничем не отличается от такой:
Код: plaintext
1.
2.
3.
4.
On Error GoTo Handler
......
Handler:
End Sub

ибо если мы находимся в блоке обработки ошибок (куда попали по первому On Error), то никакие другие On Error'ы не действуют. Хоть On Error Resume Next в блоке обработки ошибок пиши, хоть On Error Goto 0 - один хрен при возникновении ошибки в блоке обработки ошибок происходит выброс ошибки на уровень вверх. До тех пор, пока не выйдем из блока обработки ошибок (с помощью Resume) - все обшибки являются неперехватываемыми.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Переименование таблицы программным путём
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]