Newsgroup: it.comp.appl.access
Titolo: [AIUTO] DB ACCESS 2000 e dati DB unix

Premetto che non ho molte informazioni ora, ma questo post mi servirà per
iniziare a fare un lavoro.
Ho progettato un Db in access 2000 e avrò la necessità di aggiornarlo
estraendo da un db "UNIX" (fornito da un mio cliente) i campi che più mi
servono.
Ora non ho informazioni su questo DB UNIX (non so nemmeno come sia fatto...)
però esiste un sistema per imporatre correttamente i dati? Il sistemesta
UNIX mi ha comunicato che potrà darmi un'estrazione del db in formato excel
o in formato ascii...
Quallo che vorrei chiedervi sono suggerimenti, consigli o quant'altro per
poter effettuare questa "importazione" nel modo più indolore...
Grazie e ciao
Fabrizio

 ha scritto nel messaggio
news:93kgb7$a8...@news.edisons.net...

Ho avuto le tue stesse necessità ed ho risolto in questo modo. Premesso che
avendo a disposizione gli ODBC Windows per il db (Oracle, Informix,
RM-Cobol, etc.) in ambiente Unix sarebbe tutto molto più pulito (almeno a
mio parere) e che comunque solitamente costano un pozzo di soldi, ho fatto
fare dal sistemista Unix un demon che tutti le notti esporta i dati che mi
interessano in un file ascii.
Ho mappato la directory Unix sotto Windows con NFS-Pro (che schifezza!!) e
quindi riesco a vedere questi file ascii. All'interno del mio applicativo ho
collegato tali file di testo come tabelle e con una procedurina di
importazione ed una query mi estraggo i dati che mi interessano e li butto
nelle tabelle che voglio. E' comunque possibile bypassare il demone e
l'NFS-Pro, l'importante è poter disporre del file di testo con i dati, poi
te li importi come ti pare.
Resta da risolvere il problema di "quando" importare i dati. Su richiesta
del cliente, anche se a me personalmente non piace molto, ogni volta che si
apre l'applicativo in Access viene richiesto se importare o meno i dati con
una semplice autoexec. Molto probabilmente non è la migliore delle soluzione
e neanche la più pulita ma funziona.
Aloa                            Mattia

 ha scritto nel messaggio
news:0dl76.24159$eB2.3...@news.infostrada.it...



OK. Supponiamo che tu abbia il tuo file ascii frutto dell'esportazione dei
dati da Unix. Lo colleghi all'interno del tuo db Access con "Collega
tabelle". A questo punto ti crei una query sul file ascii collegato che ti
estragga tutti i dati che ti interessano e poi usi una funzione di
aggiornamento tipo questa:
Function Aggiorna()
    Dim dbL As Database, db As Database
    Dim rst As Recordset
    Dim cf As Recordset
    Set db = DBEngine.Workspaces(0).OpenDatabase(NomeDB())
    Set dbL = CurrentDb()
    Set rst = dbL.OpenRecordset("Query1", dbOpenDynaset) 'Query
    Set cf = db.OpenRecordset("TB-Agenti", dbOpenTable) 'Tabella
    cf.Index = "PrimaryKey"
    rst.MoveFirst
    While (Not (rst.EOF))
        cf.Seek "=", CLng(rst("CodiceAgente"))
        If (cf.NoMatch) Then
            cf.AddNew
            cf("CodiceAgente") = CLng(rst("CodiceAgente"))
        Else
            cf.Edit
        End If
        cf("Descrizione") = rst("Descrizione")
        cf("Indirizzo") = rst("Indirizzo")
        cf("CAP") = rst("CAP")
        cf("Comune") = rst("Comune")
        cf("PartitaIVA") = rst("PartitaIVA")
        cf("Budget") = rst("Budget")
        cf("Mercato") = rst("Mercato")
        cf("CodiceMagazzino") = rst("CodiceMagazzino")
        cf.Update
        rst.MoveNext
    Wend
    cf.Close
    rst.Close
End Function
Ho utilizzato una query semplicemente perché è più pratica. Infatti se anche
mi cambiano il tracciato record e quindi mi spostano i dati all'interno del
file ascii sarà sufficiente modificare la query e non dovrò modificare il
codice.
Spero ti esserti stato di aiuto.
Aloa                            Mattia

 >
Scusa: mi sono dimenticato di dire che sia la tabella collegata (file ascii)
che la tabella su cui devi importare i dati hanno gli stessi campi o meglio
i campi coinvolti nell'importazione hanno le stesse caratteristche su
entrambe le tabelle (lunghezza, tipo) altrimenti succede un casino.
Aloa        Mattia