Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: наличие таблицы в другой базе
 
 автор: час   (05.01.2008 в 15:07)   личное сообщение
 
 

Подскажите функцию проверки
"наличие таблицы в другой базе"
только чтоб без DAO и без ADO.

  Ответить  
 
 автор: akkorn   (05.01.2008 в 21:37)   личное сообщение
 
 

не покатит?

Function TablesInDB(PathDB As String)
Dim Wsp As Workspace, Dbs As Database, Tdf As TableDef
Set Wsp = DBEngine.Workspaces(0)
Set Dbs = Wsp.OpenDatabase(PathDB)

For Each Tdf In Dbs.TableDefs
    'прыгаем по таблицам
    MsgBox Tdf.Name
Next Tdf

Set Tdf = Nothing
Set Dbs = Nothing
Set Wsp = Nothing
End Function

Function a1()
TablesInDB ("c:\ac1.mdb")
End Function


а почему
только чтоб без DAO и без ADO

  Ответить  
 
 автор: час   (06.01.2008 в 12:11)   личное сообщение
 
 

Что ба не использовать подключаемые библиотеки...
так нуно..
Но то, что ВЫ привели подразумевает либо DAO либо ADO.... cё равно

  Ответить  
 
 автор: час   (06.01.2008 в 12:14)   личное сообщение
 
 

потомукак вот в текущей базе можно проверить вот так....


Public Function Nalichie_Tablici_v_Baze(str As String) As Boolean

'Возвращает true если есть таблица в базе
  Nalichie_Tablici_v_Baze = False
  On Error GoTo Met1
  Dim SearchString As String
  SearchString = CurrentDb.TableDefs(str).Connect
  Nalichie_Tablici_v_Baze = True

Exit Function
Met1:
  Nalichie_Tablici_v_Baze = False
  
End Function


а в другой базе???

  Ответить  
 
 автор: akkorn   (06.01.2008 в 13:21)   личное сообщение
 
 

вот вот.
КАК без DAO/ADO удаленно подключиться к другой базе?....
хотя стоп! идея... щаз проверю...

  Ответить  
 
 автор: час   (06.01.2008 в 14:30)   личное сообщение
 
 

SearchString = CurrentDb.TableDefs(str)
Connect="Путь к базе...."

  Ответить  
 
 автор: час   (06.01.2008 в 14:33)   личное сообщение
 
 



Set Tdf = Nothing 
Set Dbs = Nothing 
Set Wsp = Nothing 
End Function 

Function a1() 
TablesInDB ("c:\ac1.mdb") 
End Function


ты и тута всё открытым оставил....
Везде надо клосе
Dbs.close
а потом
Set Dbs = Nothing

  Ответить  
 
 автор: час   (06.01.2008 в 17:15)   личное сообщение
 
 

Подскажите функцию проверки 
"наличие таблицы в другой базе"
только чтоб без DAO и без ADO.

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 11:21)   личное сообщение
 
 


Public Function fTable(strTableName As String, _
    Optional strPath As String = "C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Борей.mdb") As Boolean

fTable = False
On Error GoTo ErrorHandler
DoCmd.SetWarnings False

DoCmd.RunSQL "DELETE * FROM [" & strTableName & "] IN '" & strPath & "' WHERE 1=0;"

DoCmd.SetWarnings True
fTable = True
ErrorHandler:
Select Case Err.Number
    Case 0
        MsgBox "Есть <<" & strTableName & ">> такая таблица!"
    Case 3078
        MsgBox "Нет <<" & strTableName & ">> такой таблицы!"
    Case Else
        MsgBox Err.Number & ">>--" & Err.Description
    
End Select


End Function

  Ответить  
 
 автор: час   (13.01.2008 в 11:26)   личное сообщение
 
 

При повторном вызове данной функции будет писать
"Нет <<" & strTableName & ">> такой таблицы!"
или условие не позволит этого (DELETE) сделать (WHERE 1=0)

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 11:38)   личное сообщение
 
 

Подправил обработчик

  Ответить  
 
 автор: час   (13.01.2008 в 11:41)   личное сообщение
 
 

>Подправил обработчик
это при прочих неприятностях - да?
MsgBox Err.Number & ">>--" & Err.Description

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 11:42)   личное сообщение
 
 

отлавливать сообщение jet о том "...что не может найти входную таблицу..."

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 11:46)   личное сообщение
 
 

проблема может быть в том, что если ошибок больше чем одна - какую ошибку jet отловит в первую очередь? Ведь Вы же просили без ADO & DAO !!!!

  Ответить  
 
 автор: час   (13.01.2008 в 11:54)   личное сообщение
 
 

Верно...

  Ответить  
 
 автор: час   (13.01.2008 в 11:46)   личное сообщение
 
 

Чудесно так ты видимо таким образом знаешь как выполнить функцию в другой базе?

  Ответить  
 
 автор: час   (13.01.2008 в 11:47)   личное сообщение
 
 

Я тут бъюсь никак не разберцсь...

Private Sub RunAccessSub()
    Dim ot As String
    Dim appAccess As Access.Application
    Set appAccess = CreateObject("Access.Application")
    appAccess.OpenCurrentDatabase "C:\Program Files\Microsoft Office\Office10\библиотека.mde", False
     'MsgBox appAccess.Run "библиотека.НаличиеЗапроса", "Q1"
       appAccess.Run "библиотека.НаличиеЗапроса", ""
appAccess.Run "библиотека.Пропись", "23"
    Set appAccess = Nothing
    
End Sub

  Ответить  
 
 автор: час   (13.01.2008 в 11:49)   личное сообщение
 
 

Всё работает, ошибок нет,
но результат работы функции не виден....
MsgBox не помогает

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 12:06)   личное сообщение
 
 

Функция возвращает значение указанное в объявлении.
True-таблица существует-однозначно
False-таблица не существует-вероятно

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 12:02)   личное сообщение
 
 


Чудесно так ты видимо таким образом знаешь как выполнить функцию в другой базе?

Наверное, можно и так. Я по-другому делаю:
Если есть надобность в общем ресурсе >> ссылка на базу.

  Ответить  
 
 автор: час   (13.01.2008 в 12:17)   личное сообщение
 
 

Это совсем другой вопрос.
Это не из этой оперы.

  Ответить  
 
 автор: час   (13.01.2008 в 12:18)   личное сообщение
 
 

Вопрос :
Каким образом выполнить функцию в другой базе? (MDE)

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 12:23)   личное сообщение
 
 

так ссылку на базу откройте. Получите доступ к методам и свойствам проекта

  Ответить  
 
 автор: час   (13.01.2008 в 12:38)   личное сообщение
 
 

ССылку в Referencу
или ссылку
appAccess.OpenCurrentDatabase "C:\Program Files\Microsoft Office\Office10\библиотека.mde", False
Или OpenDatabase
или...

  Ответить  
 
 автор: alecks_lp   (13.01.2008 в 15:35)   личное сообщение
 
 

tools>references

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList