Newsgroup: it.comp.lang.visual-basic
Titolo: Visual Basic + Access

Ciao,
scusate se la domanda per qualcuno può essere banale, però è la prima volta
che uso Visual Basic.
Devo fare un programma gestionale e ho pensato di usare Access per creare le
tabelle e le query, poi ho pensato di utilizzare VB per creare il programma
che utilizza il database creato in Access.
Ora la mia donmanda è la seguente:
Una volta creato il programma, posso farlo girare in una macchina che non
possiede Access?
Grazie.
    Ciao

 ha scritto

si'. le query pero' dovresti fartele in vb. il discorso sarebbe lunghissimo,
prima e' meglio che guardi un po' la guida su dao e ado. giusto un mini
esempio dao nel mio post "come posso utilizzare un db access?".
ciao, a.

 il discorso sarebbe lunghissimo, prima e' meglio che guardi un po' la
guida su dao e ado. giusto un mini esempio dao nel mio post "come posso
utilizzare un db access?".
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Scusa pal, non ho capito. Cosa intendi con questo discorso?
giuliano parlava di creare in access struttura e query.
non ho mai provato, ma da vari post mi sembrava che le query di access vb le
potesse eseguire solo con una specie di "run docmd", che prevedeva access
installato.
_se_ e' cosi', se non vuole prevedere access installato, le query se le
scrive nel programma vb. i miei vbms li installo di solito su macchine senza
access.
oddio, sbaglio ?

 ha scritto nel messaggio
news:91gas4$421i9$1...@ID-51318.news.dfncis.de...

Mi sa di si
Ciao
VB

 VB
spiegati per favore. io faccio un db access con delle query dentro. gli
faccio un'interfaccia vb. qual e' il codice per eseguire una delle query
nell'mdb ?

 ha scritto nel messaggio
news:91gjv3$4433c$1...@ID-51318.news.dfncis.de...

Se la query restituisce dei dati apri il recordset semplicemente dandogli il
nome della query:
In un database di nome Archivio hai fatto una query con Access chiamata
qryEstraeDati, in VB la richiami cosě:
Sub Esegui Query()
    dim dbArchivio  as Database
    dim recDati as Recordest
    set db =OpenDatabase("C:\TEmp\Archivio.mdb")
    set recDati=dbArchivio.OpenRecordset("qryEstraeDati")
...
end sub
Se la query esegue delle azioni sui dati tipo aggiornamento o cancellazioni
devi usare il comando Execute
es:
db.Execute("qryCancellaDati")
Se la query hai dei parametri ci vuole qulche riga in piu':
Sub Esegui Query()
    dim dbArchivio  as Database
    dim recDati as Recordest
    dim qd As QueryDef
    set db =OpenDatabase("C:\TEmp\Archivio.mdb")
    Set qd = db.QueryDefs("qryEstraeDatoConParametro")
    qd.Parameters("Paramtro").Value = Text1 'Qui assegno il contenuto di
Text1 al Parametro della query di nome  qryEstraeDatoConParametro
    Set recDati = qd.OpenRecordset
End sub
Questo in DAO, in ADO non dovrebbe essere molto diverso.
Ciao
VB

 ha scritto

grazie mille. mi apri nuovi orizzonti :)
ciao, a.

 > Maurizio Borrelli:

Vedi gli esaurienti post di Valter.
Forse la tua sensazione riguardo problemi nell'esecuzione di query native
Access potrebbe derivare da alcuni post che lamentavano l'impossibilita` di
eseguire query che:
1. richiamano funzioni vb scritte in Access;
2. usano funzioni Access non supportate da SQL.
Esempio 1.
    ' Access
    ' Modulo di codice Visual Basic
    '
    Option Compare Database
    Option Explicit
    Public Function GetNomeSocietà( _
      ByVal IDCliente As String _
    ) As String
      Dim dbs As DAO.Database
      Dim rst As DAO.Recordset
      Set dbs = Access.CurrentDb
      Set rst = dbs.OpenRecordset( _
                "SELECT [NomeSocietà]" _
              & " FROM Clienti" _
              & " WHERE [IDCliente] = '" & IDCliente & "';")
      With rst
        If Not (.BOF And .EOF) _
        Then _
          GetNomeSocietà = .Fields("NomeSocietà").Value
        .Close
      End With:  Set rst = Nothing
      dbs.Close: Set dbs = Nothing
    End Function
    Query1
    SELECT Ordini.*
         , GetNomeSocietà([Ordini].[IDCliente]
                         ) AS Cliente
    FROM Ordini;
Esempio 2.
    Query1
    SELECT Ordini.*
         , DLookUp("[NomeSocietà]"
                  ,"Clienti"
                  ,"[IDCliente]='" & [Ordini].[IDCliente] & "'"
                  ) AS Cliente
    FROM Ordini;
Quando si tenta di usare tali query native Access da Visual Basic, per
esempio col codice seguente:
    ' Visual Basic
    '
    Option Explicit
    Public Sub Main( _
    )
      Dim dbs As DAO.Database
      Dim rst As DAO.Recordset
      Set dbs = DAO.DBEngine.OpenDatabase( _
                "c:\programmi\microsoft office\office\samples\" _
                & "northwind.mdb")
      Set rst = dbs.OpenRecordset("Query1")
      rst.Close: Set rst = Nothing
      dbs.Close: Set dbs = Nothing
    End Sub
si ottiene il run-time error '3085'; nel caso dell'esempio 1:
    "Funzione 'DLookUp' non definita nell'espressione."
nel caso 2:
    "Funzione 'GetNomeSocietà' non definita nell'espressione."


 eseguire query che:
la memoria ha fallito. non ho controllato, ma direi di avere avuto in mente
i _report_ di access.
ciao, a.

 ha scritto nel messaggio
news:91hppc$43sgt$1...@ID-51318.news.dfncis.de...

Hai hai hai, la memoia ha fallito per la seconda volta 8-)
E' possibile usare anche i report di Access usando la libreria di Access e
il metodo OpenReport, metodo un po' pesante.
Visto che l'esempio non è lungo e può servire anche ad altri lo posto:
dim appAccess as Access.Application
Sub Stampa()
    set appAccess=new Access.Application
    appAccess.OpenCurrentDatabase("C:\Temp\Dati.mdb")
    appAccess.DoCmd.OpenReport "NomeDelReport", acViewNormal
    appAccess.CloseCurrentDatabase
    set appAccess=Nothing
End sub
In alternativa esistono degli activex che permettono di farlo.
Ciao VB

 In alternativa esistono degli activex che permettono di farlo.
in alternativa si puo' anche dire all'utente di non rompere e di comprarsi
access. gli si possono dire anche altre cose, ma poi mi tacciano ancora di
o.t. ...
ciao, a.

 ...
Prima che al convento cominicino ad agitarsi č meglio confermare che se non
c'č Access installato non funziona.
Ciao
VB