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

Есть задача сделать такой запрос, который бы мог переименовать файлы в папке D:\Temp таким образом, чтобы файлы с цифровой камеры типа DSCN0001.JPG получились как [Номер] + [Фамилия] . jpg ("номер" и "фамилия" - поля в базе данных соответствующие номеру и фамилии человека).

Можно было бы оставить в базе ссылки именно на файлы исходного вида (dscn****.jpg), но... просто так уж сложилось, что файлы у меня именно как "номер" + "фамилия".

Я знаю, что в VBA для переименования можно использовать вещь типа:

Код: plaintext
Name  "d:\"  & [Старый_файл] As  "d:\"  & [Новый_файл]


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

P.S. Пока все работает в виде указанного выше кода для события текущей записи табличной формы... Проблема в том, что сама эта форма мне не нужна

That's all folks...
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32489905
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробегись по рекодсету

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32489912
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub Test()
Dim rs as RecordSet
Dim strSQL as string 

strSQL =  "Select * From ..." 
'Получаем rs - зависит от того что пользуешь ADO или DAO

While Not rs.EOF

Name  "d:\"  & rs( "OldName" ) As  "d:\"  & rs( "NewName" )

rs.MoveNext
Wend
End Sub
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32490029
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Можно написать функцию, которая это делает, и включить ее в запрос.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32490332
dkny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sfagnum

Пробежаться по рекордсету можно только из формы? Т.е. при загрузке формы перебрать все записи для моего случая? (кстати, как это сделать в VBA :)

paparome

Аналогичный предыдущему вопрос, куда этот код вставить? И еще, если можно, что в этом коде нужно подправить, чтобы убрать SQL, т.к. юзается обычный, как я понимаю, DAO (mdb)? Можно: Set rs = Me.Recordset.Clone?Просто я не разбираюсь в sql... пока :).

Владимир Саныч

Как обычно самый сложный и, естественно, интересный профессионалам способ? Тогда где дежурные ссылки? :)
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32490363
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно

Код: plaintext
1.
2.
Set rs = me.recordset.clone
If Not rs.BOF then rs.MoveFirst


Впихнуть можно на событие по нажатию кнопки (например)
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32490404
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 dkny:

А что сложного? Пишем функцию:

function XXX(a as string,b as string)as integer
Name a As b
XXX=0
end function

А в запросе где-нибудь вместо F=G пишем:

F=G+XXX(...,...)

где ... - поля, в которых сидят названия файлов.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32492453
dkny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sfagnum
paparome

Большое спасибо за советы! Теперь проверю правильно ли я все это понял. Получилось примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim rs As Object
Set rs = Me.Recordset.Clone
While Not rs.EOF

If IsNull(rs( "Номер_фотографии" )) Then
Else
Name  "d:\temp\tt\dscn"  & rs( "Номер_фотографии" ) &  ".jpg"  As  "d:\temp\tt\new\"  & rs( "Фамилия" ) &  ".jpg" 
End If

rs.MoveNext
Wend



Владимир Саныч

Функции отдельные я еще не писал, так что не обессутьте :)

Значит я вставляю этот код (кстати, а куда его вставить?). Определяю свою собственную функцию ХХХ (почему именно ххх? привычка? :), чтобы Access ее понимал нормально. Эта функция из определения переименовывает файл, данный как первый аргумент "a" этой фунции во второй параметр "b".

Теперь запрос. Почему F=G, я имею в виду это что-то встроенное (потому что в продуктах MS так много важных мелочей, про которые не пишут в толстых книжках) или просто как образное выражение какого-либо вычисления? F=G+ХХХ(а,b) - только для того, чтобы для каждой записи запускалась моя функция, правильно? ХХХ=0 - на всякий случай (подводный камень)? Наконец, вместо "a" и "b", я так понимаю, можно ставить более сложные выражения?
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32492480
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторне обессутьте
Не обессутим.

авторЗначит я вставляю этот код (кстати, а куда его вставить?).
В любой простой модуль (т.е. не класса, не формы и не отчета).

авторпочему именно ххх? привычка?
Таки да.

авторПочему F=G
Просто пример. В заголовке топика упоминается запрос на обновление. Такие запросы выглядят примерно так:
UPDATE таблица SET поле = значение, поле = значение, поле = значение;
Вот я и предлагаю вместо одного (любого) из
поле = значение
написать
поле = значение + XXX(...)

авторF=G+ХХХ(а,b) - только для того, чтобы для каждой записи запускалась моя функция, правильно?
Так точно.

авторХХХ=0 - на всякий случай (подводный камень)?
Можно и без этого. Она и так вернет 0.

авторНаконец, вместо "a" и "b", я так понимаю, можно ставить более сложные выражения?
Конечно.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32492743
dkny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч

Саныч, ты хороший

That's all folks...
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608162
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пытаюсь сделать тоже самое, мне пишет что файл не найден.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Sub Test()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strOldData As String
Dim strNewData As String
Dim strKolFil As String

Dim fs As New FileSystemObject
  Dim fl As Folder
  Dim fls As Files
  Dim f As File
  Dim fn As String
  'On Error Resume Next
  fn = "D:\Temp"
  Set fl = fs.GetFolder(fn)
  Set fls = fl.Files
  
  Set cnn = CurrentProject.Connection
  Set rst = New ADODB.Recordset

  rst.Open "tblCode", cnn, adOpenKeyset, adLockOptimistic, adCmdTable

  For Each f In fls
  strOldData = Mid(f.Name,  11 ,  6 )
  strNewData = Mid(strOldData,  3 )
  strKolFil = Mid(f.Name,  18 )
    
  While Not rst.EOF
  Name fn & "RUM_" & rst("Spro") & "_" & strOldData & "_" & strKolFil _
  As fn & "RUM" & strNewData & rst("Soun") & "_" & strKolFil
  
  rst.MoveNext
  Wend
    
  Next

rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing
End Sub


...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608214
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
KVЯ пытаюсь сделать тоже самое, мне пишет что файл не найден.
1. На какой строке выдается ошибка?
2. Какой файл оно ищет?
3. Существует ли этот файл?
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608249
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка выдается на строке:
Код: plaintext
1.
2.
3.
Name fn & "RUM" & "_" & rst("Spro") & "_" & strOldData & "_" & strKolFil _
  As fn & "RUM" & strNewData & rst("Soun") & "_" & strKolFil
  

У меня файлы RUM_77022_040128_1.xml
Мне нужно их переименовать в RUM040128_7701_1.xml
Где 77022 и 7701 подставляются из справочника.
С остановом проверял все значения, вроде нормально.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608277
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
KVС остановом проверял все значения, вроде нормально.
Что значит вроде? Я повторяю свои вопросы 2 и 3.
2. Хочу увидеть здесь название файла, который ищет программа. Не который вроде должна искать, а который на самом деле ищет.
3. И есть такой файл на диске или нет.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608310
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файлы на диске есть, в диретории D:\Temp
RUM_77022_040128_1.xml такого плана
77022,77023, 77024 эти значения я меняю из таблицы tblCode рекордсетом,
дату 040128, записываю в формате 0128
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608326
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я повторяю вопрос 2. На вопрос 3 вроде сам найду ответ, если это полный список.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608349
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что я не ответил еще?
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608366
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот что я спрашивал:
Владимир Саныч2. Хочу увидеть здесь название файла, который ищет программа. Не который вроде должна искать, а который на самом деле ищет.
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608429
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кажется, мне удалось запустить эту программу головой, без Аксесса, пока ее автор пытается понять, чего я хочу.

KVfn = "D:\Temp"
Name fn & "RUM_" ...
Что должно получиться? Правильно, "D:\TempRUM_". А надо "D:\Temp\RUM_". Было сложно посмотреть это в отладчике?
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608478
Фотография KV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Вы правы я эту ошибку исправил.
Но переименовывается только один файл из папки, и вылетает такая же ошибка. Как -то может код подправить чтоб по очереди каждый файл просматривал и переименовывал
...
Рейтинг: 0 / 0
Можно ли в запросе на обновление переименовывать файлы?
    #32608489
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Точно таким же образом - через отладчик. А то пятый раз повторю тот же вопрос.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли в запросе на обновление переименовывать файлы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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