Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2024, 12:09   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
Радость поставить признак в таблицу

Здравствуйте Гуру!
Исходные данные:
есть таблица "Адреса", есть запрос "All Запрос"
есть папка "pic", где лежат фотографии.
есть папка "pdf", где лежат документы.
есть код, который при загрузке 1.xls в таблицу "Адреса" в колонку F28 добавляет признак 1 (есть фото) или 0 (нет фото)
Код:
Option Compare Database
'обновление базы
Private Sub Кнопка0_Click()
DoCmd.Close acForm, "Каталог"
If Dir(CurrentProject.Path & "\1.xls") <> "" Then
CurrentDb.Execute "DELETE * FROM Адреса"
'Обнуление счетчика
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Адреса")
With rst
.AddNew
!КодАдреса = 0 ' - имя стчетчика
.Update
.MoveFirst
.Delete
End With
'
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Адреса", CurrentProject.Path & "\1.xls"
MsgBox "Успешное обновление базы!", vbOKOnly, "Сообщение"
DoCmd.Close

Else
  MsgBox "Файл обновления отсутствует в базе!", vbOKOnly, "Сообщение"
End If
' - поставить признак 1 для номеров где есть фото
Dim s As String
Dim i As Integer
Dim dbf As Database
Dim tdf As TableDef

Set dbf = CurrentDb
Set tdf = dbf.TableDefs("Адреса")

rst.MoveFirst
For i = 0 To rst.RecordCount - 1
  s = Dir(CurrentProject.Path & "\pic\" & rst.Fields("F1").Value & ".jpg")
  rst.Edit
  If s = "" Then
    rst.Fields("F28").Value = 0 '- F28 последняя колонка,
    'если добавлять новую колонку в общую базу, надо в таблице "Адреса" тоже добавить колонку
    'и в отчетах и формах тоже поменять на F28 и т.д.
  Else
    rst.Fields("F28").Value = 1 '- тут и в all запросе добавить колонки и в табл.Адреса
  End If
  rst.Update
  rst.MoveNext
Next i
rst.Close
'
DoCmd.OpenForm "Каталог", acNormal, "", "", , acNormal
End Sub
теперь я хочу чтобы в таблице "Адреса", в колонке F29 появился признак 0 или 1 и для pdf файлов.
Я скопировал код. поменял переменные s и i, соответственно поменял путь для pdf файлов, но что-то не получается. тут видимо думать надо . Помогите пожалуйста
Думайте глобально - действуйте локально!
Iskin на форуме Ответить с цитированием
Старый 20.03.2024, 04:58   #2
Eugene-LS
Пользователь
 
Аватар для Eugene-LS
 
Регистрация: 23.02.2018
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Iskin Посмотреть сообщение
в колонке F29 появился признак 0 или 1 и для pdf файлов.
Попробуйте так:
Код:
Private Sub Кнопка0_Click()
Dim rst As Recordset
Dim sVal As String
    
    DoCmd.Close acForm, "Каталог"

    If Dir(CurrentProject.Path & "\1.xls") = "" Then
        MsgBox "Файл обновления отсутствует в базе!", vbOKOnly, "Сообщение"
        Exit Sub
    End If
    
'Зачистка
    CurrentDb.Execute "DELETE * FROM Адреса"
'Обнуление счетчика
    sVal = "ALTER TABLE Адреса ALTER COLUMN КодАдреса COUNTER(1,1)"
    CurrentDb.Execute sVal

'Импорт
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Адреса", CurrentProject.Path & "\1.xls"
    If DCount("*", "Адреса") > 0 Then
        MsgBox "Успешное обновление базы!", vbInformation, "Сообщение"
    Else
        MsgBox "Нет записей для проверки!", vbExclamation, "Сообщение !!!"
        Exit Sub
    End If
    
' DoCmd.Close ' Что Close ???

    Set rst = CurrentDb.OpenRecordset("Адреса")
    With rst
        Do Until .EOF = True 'Перебор всех записей в наборе
            rst.Edit ' - поставить признак 1 для номеров где есть фото
                sVal = CurrentProject.Path & "\pic\" & !F1 & ".jpg" 'Проверка картинки
                !F28 = (Dir(sVal, vbNormal) = "") + 1
    
                sVal = CurrentProject.Path & "\pdf\" & !F1 & ".pdf" 'Проверка PDF
                !F29 = (Dir(sVal, vbNormal) = "") + 1
            rst.Update
            .MoveNext
        Loop
    End With
    rst.Close
    
    DoCmd.OpenForm "Каталог", acNormal, "", "", , acNormal

End Sub
Eugene-LS вне форума Ответить с цитированием
Старый 20.03.2024, 07:51   #3
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Огромное спасибо!!!
Все работает. Только в 1.xls ошибка какая-то есть. признак 1 для PIC почему-то обрывается в таблице "Адреса". А для PDF все нормально. Буду разбираться.
Думайте глобально - действуйте локально!
Iskin на форуме Ответить с цитированием
Старый 20.03.2024, 08:02   #4
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Выдает вот такое сообщение.
Изображения
Тип файла: jpg ошибка.jpg (48.5 Кб, 9 просмотров)
Думайте глобально - действуйте локально!
Iskin на форуме Ответить с цитированием
Старый 20.03.2024, 08:08   #5
Eugene-LS
Пользователь
 
Аватар для Eugene-LS
 
Регистрация: 23.02.2018
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Iskin Посмотреть сообщение
Выдает вот такое сообщение.
Вы забыли примеры файлов выложить.
Без них не понять в чём дело.

Ошибка преобразования может возникать например когда вы пытаетесь вставить текст в числовое поле.
Eugene-LS вне форума Ответить с цитированием
Старый 20.03.2024, 08:27   #6
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 308
По умолчанию

Цитата:
Сообщение от Eugene-LS Посмотреть сообщение
Вы забыли примеры файлов выложить.
Без них не понять в чём дело.

Ошибка преобразования может возникать например когда вы пытаетесь вставить текст в числовое поле.
Файл вложил.
Т.е. надо пересмотреть формат полей, начиная с тех строк, где этот признак обрывается?
Вложения
Тип файла: zip 1.zip (310.8 Кб, 1 просмотров)
Думайте глобально - действуйте локально!
Iskin на форуме Ответить с цитированием
Старый 20.03.2024, 09:21   #7
Eugene-LS
Пользователь
 
Аватар для Eugene-LS
 
Регистрация: 23.02.2018
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Iskin Посмотреть сообщение
Т.е. надо пересмотреть формат полей, начиная с тех строк, где этот признак обрывается?
Не знаю - не могу у вас исходный файл найти никак

Попробуйте импортировать так:
Код:
'Импорт
    sVal = "INSERT INTO Адреса SELECT * FROM [Лист1$] " & vbCrLf & _
            "IN '" & sSRCPath & "'[Excel 8.0; HDR=NO;]" & vbCrLf & _
            "WHERE ((Not F1='НомерDKD') AND (F1 Is Not Null));"
    CurrentDb.Execute sVal

' ...
У меня отработало без ошибок.
Eugene-LS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
признак конца файла rachina C# (си шарп) 5 21.02.2016 19:54
Удаление строк не содержащих признак 1i1i Microsoft Office Excel 3 03.09.2013 12:23
Признак запущенного файла davidoff_pk Win Api 7 04.08.2012 12:01
Признак переполнения Dayne Общие вопросы C/C++ 9 19.03.2009 18:26