Как узнать, какие таблицы изпользуются в проекте?

Гальчук Леонид
Дата: 23.09.2005 10:57:29
Есть база данных на SQL Server. Есть проект Access. Подскажите, пожалуйста, существует ли способ узнать, какие объекты базы данных (таблицы, представления) используются в формах данного проекта, в том числе как источники данных полей со списком и т.п.
Serge Gavrilov
Дата: 23.09.2005 11:54:33
Можно пройтись по объектам и посмотреть нужные свойства.
Но, а если эти свойства определяются программно?
Гальчук Леонид
Дата: 23.09.2005 11:59:41
Тогда придется пройтись по всем программам... :)
Serge Gavrilov
Дата: 23.09.2005 12:04:53
Гальчук Леонид
Тогда придется пройтись по всем программам... :)

можно, но не в mde
Latuk
Дата: 23.09.2005 12:18:32
Ну вот примерно так

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_TmpSerch]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[_TmpSerch]
GO

CREATE TABLE [dbo].[_TmpSerch] (
	[ID] [int] IDENTITY (1, 1) NOT NULL ,
	[ObjName] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL ,
	[ObjType] [varchar] (50) COLLATE Cyrillic_General_CI_AS NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[_TmpSerch] WITH NOCHECK ADD 
	CONSTRAINT [PK__TmpSerch] PRIMARY KEY  CLUSTERED 
	(
		[ID]
	)  ON [PRIMARY] 
GO

Public Sub TmpSerch(Signatura As String)
Dim frm As Form, odj As Object
Dim i As Integer, ctr As Control


CurrentProject.Connection.Execute "DELETE FROM _TmpSerch"

CurrentProject.Application.Echo False

For i = 0 To CurrentProject.AllForms.Count - 1
    DoCmd.OpenForm CurrentProject.AllForms(i).Name, acDesign
    Set frm = Forms(CurrentProject.AllForms(i).Name)
    If InStr(frm.RecordSource, Signatura) <> 0 Then
        CurrentProject.Connection.Execute "INSERT INTO _TmpSerch (ObjName,ObjType) VALUES('" & frm.Name & "','RecordSource')"
    End If

    For Each ctr In frm.Controls
        If ctr.ControlType = acComboBox Or ctr.ControlType = acListBox Then
            If InStr(ctr.RowSource, Signatura) <> 0 Then _
                CurrentProject.Connection.Execute "INSERT INTO _TmpSerch (ObjName,ObjType) VALUES('" & frm.Name & "!" & ctr.Name & "','RowSource')"
        End If
    Next
    DoCmd.Close acForm, frm.Name, acSaveNo
Next

CurrentProject.Application.Echo True

Set frm = Nothing

Тут идет поиск по источникам форм и их контролов
точно так же можно пройтись по отчетам
здесь происходит поиск конкретной сигнатуры
чуток подумай и переделай на список сигнатур
список сигнатур из названий объектов БД можно взять из таблички sysobjects
Гальчук Леонид
Дата: 23.09.2005 13:38:03
Спасибо всем!