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

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

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

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

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


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

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

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

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
21.04.2004, 14:59:19
    #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
21.04.2004, 15:35:09
    #32490029
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Можно написать функцию, которая это делает, и включить ее в запрос.
...
Рейтинг: 0 / 0
21.04.2004, 17:06:19
    #32490332
dkny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Sfagnum

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

paparome

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

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

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

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


Впихнуть можно на событие по нажатию кнопки (например)
...
Рейтинг: 0 / 0
21.04.2004, 17:23:06
    #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
22.04.2004, 16:56:05
    #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
22.04.2004, 17:05:53
    #32492480
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
авторне обессутьте
Не обессутим.

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

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

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

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

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

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

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

That's all folks...
...
Рейтинг: 0 / 0
16.07.2004, 14:05:30
    #32608162
KV
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
16.07.2004, 14:20:11
    #32608214
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
KVЯ пытаюсь сделать тоже самое, мне пишет что файл не найден.
1. На какой строке выдается ошибка?
2. Какой файл оно ищет?
3. Существует ли этот файл?
...
Рейтинг: 0 / 0
16.07.2004, 14:31:32
    #32608249
KV
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
16.07.2004, 14:39:26
    #32608277
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
KVС остановом проверял все значения, вроде нормально.
Что значит вроде? Я повторяю свои вопросы 2 и 3.
2. Хочу увидеть здесь название файла, который ищет программа. Не который вроде должна искать, а который на самом деле ищет.
3. И есть такой файл на диске или нет.
...
Рейтинг: 0 / 0
16.07.2004, 14:48:54
    #32608310
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Файлы на диске есть, в диретории D:\Temp
RUM_77022_040128_1.xml такого плана
77022,77023, 77024 эти значения я меняю из таблицы tblCode рекордсетом,
дату 040128, записываю в формате 0128
...
Рейтинг: 0 / 0
16.07.2004, 14:54:43
    #32608326
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Я повторяю вопрос 2. На вопрос 3 вроде сам найду ответ, если это полный список.
...
Рейтинг: 0 / 0
16.07.2004, 15:04:21
    #32608349
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Так что я не ответил еще?
...
Рейтинг: 0 / 0
16.07.2004, 15:08:20
    #32608366
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Вот что я спрашивал:
Владимир Саныч2. Хочу увидеть здесь название файла, который ищет программа. Не который вроде должна искать, а который на самом деле ищет.
...
Рейтинг: 0 / 0
16.07.2004, 15:22:35
    #32608429
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в запросе на обновление переименовывать файлы?
Кажется, мне удалось запустить эту программу головой, без Аксесса, пока ее автор пытается понять, чего я хочу.

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


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