Newsgroup: it.comp.lang.visual-basic
Titolo: VB e report di Access

Salve a tutti.
Da alcuni anni sviluppo programmini/database in Access (fin dalla versione
1.1) e da qualche tempo utilizzo VB 6.0.
Premetto che non ho ancora approfondito l'utilizzo dei nuovi oggetti COM e,
di solito, uso i soliti metodi DAO: OpenDatabase, OpenRecordSet, ecc. per
"collegarmi" a record contenuti in un file MDB.
La domanda è questa: da una applicazione VB, come posso visualizzare,
modificare e stampare run time i report contenuti in un database Access?
So che è possibile (probabilmente esistono OCX freeware che lo permettono)
però vorrei avere qualche "dritta" da chi ne ha usato qualcuno o comunque
dei consigli su dove cercarli.
Esistono controlli fatti appositamente da Microsoft? O magari, perdonate la
mia ignoranza, VB 6.0 ha già al suo interno la possibilità di utilizzare i
report di Access "gratis"?
Grazie, a buon rendere.
Marco
--
Posted from [195.103.102.67]
via Mailgate.ORG Server - 
http://www.mailgate.org

report di Access "gratis"?
Se ho interpretato bene la domanda :
tramite DDE si può chiedere ad Access di stampare o
visualizzare un report, anche se il recordset ha dei filtri
da inserire all'avvio.
   ' Se Access non è in esecuzione lo avvia, altrimenti lo attiva '
   lngRet = FindWindow("OMain", "Microsoft Access")
   If lngRet > 0 Then
      'Attiva Access
      lngRet = ShowWindow(lngRet, SW_SHOWMAXIMIZED)
      DoEvents
      'Flag che serve in seguito
      MsAccessWasRunning = True
   Else
      'Access non è stato trovato, occorre avviarlo
      MsAccessWasRunning = False
      'Qui uso Winexec, ma può essere una  funzione shellexec
      lngRet = WinExec(AccessPath & " " & NomeDatabase & " /nostartup", SW_SHOWNORMAL)
      DoEvents
   End If
   ' Inizia la procedura DDE '
   ' DDE_Exec è un form invisibile con un oggetto Textbox (Txt_DDE)
   Load DDE_Exec
   DDE_Exec.Txt_DDE.LinkMode = 0
   DDE_Exec.Txt_DDE.LinkTopic = "MSACCESS|SYSTEM"
   DDE_Exec.Txt_DDE.LinkItem = "SysItems"
   DDE_Exec.Txt_DDE.LinkMode = 2
   DDE_Exec.Txt_DDE.LinkRequest
   'Se Access era già avviato, gli si chiede gentilmente di chiudere
   'il database eventualmente aperto e di aprire quello indicato
   If MsAccessWasRunning = True Then
      DDE_Exec.Txt_DDE.Text = ""
      DDE_Exec.Txt_DDE.LinkItem = "Topics"
      DDE_Exec.Txt_DDE.LinkRequest
      If InStr(DDE_Exec.Txt_DDE.Text, UCase$(Dir$(NomeDatabase))) = 0 Then
         DDE_Exec.Txt_DDE.LinkExecute "[CloseDatabase]"
         DDE_Exec.Txt_DDE.LinkExecute "[OpenDatabase " & NomeDatabase & "]"
         DoEvents
      End If
   End If
   'Chiama Access per l'esecuzione dei comandi impostati '
   'PrintMode può essere acViewDesign, acViewNormal o
   'acViewPreview. acViewNormal da inizio immediato alla
   'stampa. E' possibile passare anche dei filtri e delle condizioni
   'WHERE coerenti.
   DDE_Exec.Txt_DDE.LinkExecute "[OpenReport " & NomeReport _
        & "," & PrintMode & ", " & ParametriFiltro_
        & "," & CondizioniWHERE & "]"
   DoEvents
   DDE_Exec.Txt_DDE.LinkMode = 0
   DoEvents
   Unload DDE_Exec

Il DDE funziona, ma solo se sul PC c'è anche installato Access.
Io ho provato in tutti i modi a stampare un report avendo solo l'mdb e non
Access, ma non ci sono mai riuscito (altrimenti Crystal Report chi lo
comprava??)

Un metodo più semplice è:
Dim appl As Access.Application
Set appl = New Access.Application
appl.OpenCurrentDatabase("MioDB.Mdb")
appl.DoCmd.OpenReport "Report1"
appl.CloseCurrentDatabase
Ma, da quello che mi risulta, anche in questo caso bisogna avere
Access installato.
Ciao,
Moreno
#sirri#@
morenosoft.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------