powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / переименование полей в запросе... как?
16 сообщений из 16, страница 1 из 1
переименование полей в запросе... как?
    #32197508
tzpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Случилось так, что мне срочно надо переименовывать огромное количество переменных в полях запросах. Делать это вручую нет никакой возможности. Как это сделать автоматичесски?

Спасибо.
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197529
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Огромное количество переменных или полей? Можно примерчик?
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197544
tzpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это чаcть запроса:

WHERE (((tbl_Report_Prev.[Prime Code])="PC-05") AND ((tbl_Report_Prev.Contractor)="Cumulative:"));

это часть селективного запроса, где в поле критерия WHERE надо просто поменять “Cumulative:” на “Current”.
Вот таких запросов очень много.
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197553
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч можно и без примера - у меня такое уже было.
Была функция округление на русском языке - из-за глюков - пришлось переименовать в англ. абривиатуру. В VBА все прошло гладко, а запросики пришлось ручками, ручками. Хотя и с помощью ситемной таблицы (жалко гадина не обновляемая) выцеплял имена запросов где эта функция используется. Было это давно - после встречал утилиты для перименования объектов бд. Вроде на http://www.trigeminal.com есть что-то. Точно не уверен.
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197605
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вот так вот:

Dim q As QueryDef
For Each q In CurrentDb.QueryDefs
q.Sql = Replace(q.Sql, ...)
Next
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197622
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я му%ак!
Я Идиото!
Я Кретино!
Я Дурень!

Я ник сменю...

Забыть про такое! (хотя тогда я про это мог и не знать :)
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197629
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ником поделиться?
Или могу кучу конструктивных советов дать
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197633
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не 2 Лохов быть не может
а вот советы - давай.
Будет выглядить классно - типа обоср%л
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197641
tzpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я заранее извиняюсь за свою неграмотность. Visual Basic для меня, к сожалению, как для барана - новые ворота. Не могли бы вы подробнее описать как осуществить данную процедуру (правильно я понял, надо вставить данный код в модуль в каждой базе данных?) Можно дать мини ремарку для каждой строки кода?

Очень благодарен вам за помощь.
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197659
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub ReNameQ()
    Dim db                         As DAO.Database
    Dim q                          As DAO.QueryDef
    Const FindString               As String =  "Cumulative:" 
    Const ReplaceString            As String =  "Current:" 
    Set db = DBEngine( 0 )( 0 )
    On Error Resume Next
    For Each q In db.QueryDefs
        Debug.Print  "Обрабатывается запрос: "  & q.Name
        q.SQL = Replace(q.SQL, FindString, ReplaceString,  1 , - 1 , vbTextCompare)
    Next
    Set db = Nothing
    Set q = Nothing
    Set db = Nothing
End Sub

Вставь в модуль. Если нет ни какого модуля, то создай. Поставь курсор внутрь процедура и нажми F5
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197663
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это ведь надо выполнить один раз? Поэтому надо просто создать процедуру в каком-нибудь модуле и запустить ее из Immediate Window (набрав там ее имя и нажав Enter). Вот текст с ремарками:

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub ModifyQueries()
Dim q As QueryDef 'описание переменной типа запрос'
For Each q In CurrentDb.QueryDefs 'заголовок цикла, проходящего по всем запросам текущей базы'
q.Sql = Replace(q.Sql,  """ Cumulative: """ ,  """ Current: """ ) 'замена селекта в очередном запросе
                                на селект, в котором то, что надо, заменено'
Next
End Sub


Настоятельный совет - перед запуском этой процедуры сохранить копию mdb в надежном месте.

Если таких файлов mdb несколько, то можно эту процедуру усовершенствовать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub ModifyQueries(sPath As String) 'добавлен параметр - местонахождение базы'
Dim db As DataBase 'описание переменной типа база'
Dim q As QueryDef
Set db = DBEngine.OpenDatabas(sPath) 'переменная начинает ссылаться на нужную базу'
For Each q In db.QueryDefs 'проходим не по текущей базе, а по db'
q.Sql = Replace(q.Sql,  """ Cumulative: """ ,  """ Current: """ )
Next
End Sub


И тогда надо будет запустить эту процедуру несколько раз - каждый раз с параметром, например:

ModifyQueries "c:\MyBase.mdb"
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197665
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Почему форум не ловит ошибок компиляции? OpenDatabas e
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197707
tzpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все работает! Вы сэкономили мне кучу времени.
Огромное спасибо всем! Особенно Владимиру и Кретино.
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197733
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а может кто подскажет дураку, чего
за функция такая Replace?
у меня в а97 ее не вижу
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197745
>Особенно Владимиру и Кретино.

Ну я типа исправился

>а может кто подскажет дураку, чего
за функция такая Replace?

Дурак сегодня Я!
А ты нормальный, просто Replace из VBA6 - т.е. из 2000/2002 версий офиса
...
Рейтинг: 0 / 0
переименование полей в запросе... как?
    #32197813
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если нету Replace, то ее можно написать. Например:

Function Replace(ByVal s1 As String, ByVal s2 As String, ByVal s3 As String) As String
Dim i As Integer
Do
i = InStr(s1, s2)
If i = 0 Then
Replace = s1
Exit Function
End If
s1 = Left(s1, i - 1) & s3 & Mid(s1, i + Len(s2))
Loop
End Function
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / переименование полей в запросе... как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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