powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рисунки - MDB - SQL
3 сообщений из 3, страница 1 из 1
Рисунки - MDB - SQL
    #32875404
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уважаемые знатоки!
есть задача:
обеспечить хранение рисунков - А97
хочу реализовать хранение в базе лишь линков на файлы, лежащие в сети
кто сталкивался с таким хранением, блохи-грабли?

второе:
планируется переход на SQL server или ОРАКЛ
блохи-грабли тут?

thanx!
...
Рейтинг: 0 / 0
Рисунки - MDB - SQL
    #32875513
AVVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грабли тут одни: консистетность записей. Т.е. чтобы никто не удалял, премещал, переименовывал, и т.п. файлы, на которые заведены линки. Т.е. полиси для этого случая должны быть прописаны очень четко и не менее четко они должны отслеживаться. Второй вопрос - версионность. Третий вопрос - имена файлов. В принципе удобно, но если с дисциплиной хранения проблемы, то лучше и не браться, толку не будет.

В SQL все то же самое, прекрасно работает и хранится (в ввиде ссылок). Ссылки хороши, если любой клиент, который цепляется к базе (и должен смотреть на содержание файла) поддерживает "follow hyperlink".

Можно хранить в виде BLOB/Image или еще какого-нить бинарного формата, но тогда придется хранить и контекст этого BLOB - т.е. чтобы знать, какое приложение поднимать для просмотра содержимого.
...
Рейтинг: 0 / 0
Рисунки - MDB - SQL
    #32875541
TurboDyatel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как-то делал в свое время.
Картинки (бинарники со сканера) сливаются в каталог, по ним формуруется талица путей на файлы. Путь на файл используется элементом "рисунок" для показа, а данные таблицы - для поиска. Хотя можно, наверное, и без таблиц было обойтись.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub btnRefreshPicture_Click()
 'Запуск процедуры обновления основного каталога картинок
 On Error GoTo E
               
     'Обновление каталога картинок
    Call RefreshPicture
    
       DoCmd.Close acForm, "msg"
      Exit Sub
E:    MsgBox ("Ошибка " & err.Description)
End Sub
Код: 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.
Sub RefreshPicture()
'Процедура поиска новых картинок, перписывания их в служебный каталог
'и записи путей

    Dim strMain As String
    Dim strBuff As String
  'Проверка наличия каталогов, записанных в таблице констант
    
    If PicCatalogExist("Piñ_Main_Catalog") = False Then GoTo E1
    If PicCatalogExist("Pic_Buff_Catalog") = False Then GoTo E1
  
  'Чтение имен файлов из заданного по-умолчанию каталога и запись в temp-
'таблицу
   Call ReadNewPic
   
   'Поиск и пометка новых изображений
   Call FlagNewPic
   
   'Обработка новых данных графических изображений
   Call WritePicData
   
  Exit Sub
E1:  MsgBox ("Подгрузка изображений невозможна" & Chr( 13 ) & "отсутствуют один или оба заданных по-умолчанию каталога")
  Exit Sub
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Function PicCatalogExist(strConstantName As String) As Boolean
' Проверка наличия каталога
  Dim strCatalog As String
  Dim strFindRezult As String
            
  strCatalog = ReadConstant(strConstantName)
  strFindRezult = Dir(strCatalog, vbDirectory)
   If strFindRezult <> "" Then
   PicCatalogExist = True
   Else
   PicCatalogExist = False
   End If
   
End Function
Код: 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.
44.
45.
46.
Sub ReadNewPic()
'Считывание названий файлов и сброс их в темп-таблицу  
  
  Dim strNames() As String
  Dim NameBuffConstant
  Dim strMassage
  Dim i As Long
  Dim j As Long
  Dim strSpisok As String
  
  Dim strDel As String
strDel = "Delete * from tmpNewFiles; "
CurrentDb.Execute strDel
  
  
   Dim strBuffCatalog As String
   
   NameBuffConstant = "Pic_Buff_Catalog"
  
    strBuffCatalog = ReadConstant(NameBuffConstant)
    Dim strFile As String

  strFile = Dir(strBuffCatalog)
  
  i =  1 
Do Until strFile = ""

     ReDim Preserve strNames(i)
     strNames(i) = strFile
      i = i +  1 
    strFile = Dir()
Loop

  Dim rstNewPhoto As DAO.Recordset
  Set rstNewPhoto = CurrentDb.OpenRecordset("tmpNewFiles", dbOpenDynaset)
    rstNewPhoto.AddNew
      strSpisok = ""
      For j =  1  To i -  1 
        rstNewPhoto.AddNew
        rstNewPhoto("FileName") = strNames(j)
        rstNewPhoto("Name") = DelRasshir(strNames(j))
        rstNewPhoto.Update
        strSpisok = strSpisok & "  " & strNames(j)
      Next j
        'MsgBox (strSpisok)
End Sub
Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Sub FlagNewPic()
'Поиск и пометка новых изображений
Dim strTableName As String
Dim strCompareAtr As String
Dim strCriteria As String
Dim strFK
On Error GoTo E:

 strTableName = ReadConstant("Pic_Base_Table")
 strCompareAtr = ReadConstant("Pic_Compare_Attribute")
 strFK = ReadConstant("Pic_BasePK_Attribute")
 strCriteria = strTableName & "." & strCompareAtr
'tmpNewFiles.Base_FK = [tblMainData]![ID]
 
 Dim strSql
 Dim strSql1
 Dim strFunc As String
 Dim strNumberChar As String

 strFunc = "Right": strNumberChar = "6"
 
  strSql1 = "Select " & strFunc & "([" & strTableName & "]![" & strCompareAtr & "]," & strNumberChar & ")"
 strSql1 = strSql1 & " AS AtrPart"
 strSql1 = strSql1 & " FROM " & strTableName
 
 Dim qdTemp As DAO.QueryDef
 Dim qdfName As String

 qdfName = "tempNumber"
 
 Set qdTemp = CurrentDb.CreateQueryDef(qdfName, strSql1)
 
   qdTemp.Close
   
 
  
      strSql = "UPDATE tmpNewFiles"
      strSql = strSql & " INNER JOIN tempNumber on tmpNewFiles.name="
      strSql = strSql & qdfName & ".AtrPart "
      strSql = strSql & "SET tmpNewFiles.flagNew=true"
      

CurrentDb.Execute strSql
DoCmd.DeleteObject acQuery, qdfName

'SELECT tmpNewFiles.Name FROM cArchive1, tmpNewFiles
'WHERE (((tmpNewFiles.Name)=Right([cArchive1]![cNumber],6)));

Exit Sub
E:
MsgBox ("Ошибка при пометке новых картинок  " & err.Description)
End Sub
Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Sub WritePicData()

'Тут немного не то, что тебе надо, так как тут обрабатываются только те картинки, имя которых совпадает с тем, что уже есть в базе


Dim strNewFiles As String
strNewFiles = "SELECT tmpNewFiles.FileName, tmpNewFiles.Name, tmpNewFiles.Base_FK FROM tmpNewFiles WHERE (((tmpNewFiles.flagNew)=True));"
Dim strFileName As String
Dim rstNewFiles As DAO.Recordset
Dim lngBaseFK As Long
Set rstNewFiles = CurrentDb.OpenRecordset(strNewFiles, dbOpenDynaset)

Dim strBuffPath As String
Dim strMainPath As String

'
strBuffPath = ReadConstant("Pic_Buff_Catalog")
strMainPath = ReadConstant("Pic_Main_Catalog")


Dim strPathNew As String
Dim strPathBase As String
Dim strFindText As String
Dim lngFK As Long

 If rstNewFiles.EOF <> True Then
   rstNewFiles.MoveFirst
   Do Until rstNewFiles.EOF
   
   
       strFileName = rstNewFiles!Filename
   
    strPathNew = strBuffPath & strFileName
    strPathBase = strMainPath & strFileName

    FileCopy strPathNew, strPathBase

      
      '!!!!!!!!!!
      strFindText = Dir(strPathBase)

      If strFindText = "" Then GoTo E1
            
     
      Kill strPathNew
           
E1:   rstNewFiles.MoveNext
   Loop
  
 End If
Dim strDel As String
strDel = "Delete * from tmpNewFiles; "
CurrentDb.Execute strDel
End Sub
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рисунки - MDB - SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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