2013-05-28 1 views
0

У меня есть две версии моего интерфейса доступа. Один для Access 2003, который все еще выполняется несколькими компьютерами, еще не обновленными до Access2010 и Win7, версия Acces2010, к сожалению, вызвана в результате сбоя Access в 2003 году по завершении основной формы, которую я не смог исправить. Backend - SqlServer 2005 SqlExpress.Как найти инструкцию оператора SELECT в интерфейсе доступа?

Поэтому я застрял со старым интерфейсом для людей 2003 года, которым, к счастью, не нужны новые возможности в версии 2010 года.

Теперь утилита технического обслуживания, которая загружает данные с дампа мейнфрейма, блокируется «SELECT 1 на Patient_Clinic_Visits», когда версия Access 2003 работает где-то. То, что я не могу найти, - это то, откуда «SELECT 1 на Patient_Clinic_visits».

Я просмотрел весь код модуля и все запросы, но не могу найти ничего подобного.

Я предполагаю, что он должен быть в форме frontend, но как я могу искать это, не просматривая все объекты и элементы управления этой формы для RecordSource с некоторым кодом SQL в нем?

веселит,

JonHD

+0

Можете ли вы добавить код/​​SQL? –

ответ

0

В меню Access выберите Database Tools-> архивариус. Там выберите все объекты и нажмите OK. Это займет некоторое время, но тогда вам будет представлен отчет, в котором перечислены все в вашей базе данных, включая код в конце.

Отчет может быть довольно большим для больших баз данных.

Вы можете экспортировать отчет в Word (для него есть опция). Там найдите строку. (Я думаю, что это должно быть «SELECT 1 от Patient_Clinic_visits»)

+0

Спасибо Cha .. в конце я использовал следующую процедуру: – dmc2005

1

В конце я искал другие вопросы и думал о программном демпинге вероятной оскорбительной информации. Это моя смесь двух разных ответов, чтобы делать то, что я хочу. Сделайте до пределов Мгновенного окна в VBA по количеству строк, которые он будет хранить от Debug.Print, я использовал объект WScript для дампа в файл журнала.

Код в основном:

  • открывает каждую форму в базе данных, в своей очереди
  • отвалов его описание RecordSource
  • затем для каждого элемента управления на его форме, отвалы соответствующей информации, которая МАЙ содержит SQL в в некотором роде
  • примечание: я использую тот факт, что Writeline (некоторый код), который вызывает и ошибка, будет терпеть неудачу и не писать, чтобы избежать большого количества тестов для разных типов управления, для которых свойства сбросить или не сбрасывать ,
  • закрыл форму
  • затем проходит через все запросы в базе данных, и дамп кода SQL

(Note1: в конце концов, это не нашло ответ на мою проблему - см моих другой последний вопрос !!)

(Note2: это был быстрый и грязный сценарий.Я заметил, что в первый раз, когда он запустил WriteStream, ничего не писал, даже несмотря на то, что он прошел через код, который, казалось, что-то делал. Во всяком случае, когда я побежал, он работал. Не нашли времени для отладки, почему!).

Function DumpFormsAndQueries() 

     Dim obj As AccessObject 
     Dim objctrl As Control 
     Dim frm As Form 
     Dim dbs As Object 


     Dim fsoSysObj As FileSystemObject 
     Dim filFile  As Object 
     Dim txsStream As TextStream 
     Dim strPath  As String 

     Set dbs = Application.CurrentProject 

     Set fsoSysObj = New FileSystemObject 

     ' Return Windows Temp folder. 

     strPath = "C:\Temp\" 

     On Error Resume Next 
     ' See if file already exists. 
     Set filFile = fsoSysObj.GetFile(strPath & "Database_Form_dump.Log") 
     ' If not, then create it. 
     If Err <> 0 Then 
      Set filFile = fsoSysObj.CreateTextFile(strPath & "Database_Form_dump.Log") 
     End If 

     Debug.Print ">> dumping to: " & strPath & "Database_form_dump.log" 

     Set txsStream = filFile.OpenAsTextStream(ForAppending) 

     For Each obj In dbs.AllForms 

      DoCmd.OpenForm obj.name, acDesign 
      Set frm = Forms(obj.name) 

      Debug.Print ">>>> dump form: " & obj.name 

      txsStream.WriteLine "=====================================================================" 
      txsStream.WriteLine "Form  : " & obj.name 
      txsStream.WriteLine "RecordSource: " & frm.RecordSource 
      txsStream.WriteLine "=====================================================================" 

      For Each objctrl In frm.Controls 

       txsStream.WriteLine "     --------------------------------------------------" 
       txsStream.WriteLine "     : " & objctrl.name & " Type = " & TypeName(objctrl) 
       txsStream.WriteLine "     --------------------------------------------------" 
       On Error Resume Next 
       txsStream.WriteLine "     >>>> Recordsource: (" & objctrl.RecordSource & ")" 
       txsStream.WriteLine "     >>>> Controlsource: (" & objctrl.ControlSource & ")" 
       txsStream.WriteLine "     >>>> Rowsource: (" & objctrl.RowSource & ")" 
       txsStream.WriteLine "     >>>> Caption: (" & objctrl.Caption & ")" 
       txsStream.WriteLine "     >>>> Text: (" & objctrl.Text & ")" 
       txsStream.WriteBlankLines 1 


      Next objctrl 


      DoCmd.Close acForm, obj.name, acSaveNo 

      txsStream.WriteBlankLines 3 

     Next obj 

      txsStream.WriteLine "=====================================================================" 
      txsStream.WriteLine " Q U E R I E S - in database" 
      txsStream.WriteLine "=====================================================================" 

     Dim db As DAO.Database 
     Dim qdf As DAO.QueryDef 

     Set db = CurrentDb() 
     For Each qdf In db.QueryDefs 
      txsStream.WriteLine "Query: " & qdf.name 

      txsStream.WriteLine "SQL (start) ---------------------------------------------------- " 
      txsStream.WriteLine qdf.sql 
      txsStream.WriteLine "SQL (end) ---------------------------------------------------- " 
     Next qdf 
     Set qdf = Nothing 
     Set db = Nothing 


     txsStream.Close 

     Debug.Print ">> ended" 

End Function 
Смежные вопросы