Newsgroup: it.comp.lang.visual-basic
Titolo: [?!] Aprire vecchi database

..Il suggerimento era: "proverei a scrivere una routine di aggiornamento per
travasare i vecchi dati nel nuovo db"
Quel che non so fare è proprio questo!
Io non possiedo i vecchi dati, quelli li avrà semmai l'utente sulla sua
macchina;
dovrei scrivere una routine che li prelevi dai vecchi archivi e li inserisca
in archivi nuovi, ma non riesco nemmeno ad aprirli!
Se sto facendo discorsi inutili e banali, non prendetevi il tempo di
rispondere, ma è possibile che nessuno si sia mai trovato in questa
situazione?!

 in archivi nuovi, ma non riesco nemmeno ad aprirli!
e' vero che non possiedi i dati di ogni utente, ma, se devi fare un
aggiornamento di un programma di db, mi auguro tu conosca la struttura dei
vecchi archivi. direi di si', visto che a mano li hai convertiti. mi sembra
di aver capito dall'accenno a vb3 che siano in access 1 o 2.
se hai la struttura, puoi provare a crearti un archivio fittizio, aprirlo
col tuo prg (magari fanne uno apposta, da far lanciare _prima_ del dbms
aggiornato), e cercare di travasare i dati, mantenendo la consistenza del
db.
almeno, io farei cosi'. solo, non ho mai tentato di aprire con vb un access
anteriore al 95 -- forse il punto e' questo. come limite estremo potresti
esportare le vecchie tabelle come txt o csv e andarli a rileggere col prg
nuovo.
spero ti sia di qualche aiuto,
ciao, a.


 nuovo.
L'idea non è male, tanto sarebbe un'operazione da eseguire una e una sola
volta.
Scusa l'ignoranza, ma come faccio ad esportare i dati da un file mdb che non
riesco ad aprire?
Sarebbe possibile creare con OLE, aprire i db uno per uno e convertirli man
mano, senza farlo vedere all'utente?
La funzione di conversione c'è, è nul menù di access - strumenti - utilità
database...
C'è modo di accedervi tramite vb?
Cinzia

 Cinzia
non conosco ole.
che non riesci ad aprire in che senso ? non ho ancora capito se e' un
access2 o cosa. se devi fare un aggiornamento, ti avranno pur dato delle
specifiche.
vb6 non ci riesce proprio ad aprire un mdb2 ? evtnualmente vb6 non potesse,
non puoi scrivere un vb3 che li legga e generi i csv ?
scusa, ma stando sulle generali sono costretto ad andare un po' a caso.
sull'accesso alle funzioni di access via vb, prob si', ma mi sa che ci
dovra' poi essere access nella versione giusta su ogni macchina in cui
vorrai fare quell'operazione. non so se ti conviene. prova a fare un post
speicifico, chiarendo vba-access, maurizio o qualcun altro ti sapra' dare
una risposta piu' precisa.
ciao, a.

 non puoi scrivere un vb3 che li legga e generi i csv ?
Questa poteva essere una buona idea, ma non ho vb3..
Seguendo la stessa idea, ho provato a fare un'altra connessione ai vecchi
database, creando un'origine dati ODBC in grado di leggere archivi Access2,
ma non ci sono riuscita...
pensate sia una strada percorribile, oppure ha poco senso?

L'idea di scrivere un programmino vb3 non sarebbe male, però non ho vb3.
Seguendo la stessa idea, è possibile invece usare un diverso gestore di
database che consenta di aprire anche vecchi archivi Access2?
Ho provato con ODBC e una nuova connessione, ma sono in alto mare...
MSDN consiglia di usare ODBC proprio in casi come questo (se ho capito
bene), ma non riesco a scrivere una stringa di connessione che abbia un
senso.
Accetto idee in proposito

 ha scritto

ho provato ad aprire un vecchio access direttamente con il dataform wizard
di vb6 ma non gli e' proprio piaciuta.
allora ho provato in un altro modo:
nel form qui sotto ci sono
command1
data1
dbgrid1
cboTable, settato su dropdown list
il db "codici.mdb" e' un access2.
riferimenti: dao 3.6
quando faccio clic su command1, la tabella si spaparanza tutta nella
griglia.
a questo punto ci si dovrebbe fare qualunque cosa...
ciao, a.
Option Explicit
Dim db As Database
Private Sub Command1_Click()
    Dim rs As Recordset
    Set rs = db.OpenRecordset(cboTable)
    Set Data1.Recordset = rs
    DBGrid1.ReBind
End Sub
Private Sub Form_Load()
    Set db = OpenDatabase("codici")
    Dim t As TableDef, tdn As String
    For Each t In db.TableDefs
        If Left(t.Name, 4) <> "MSys" Then
            tdn = UCase(t.Name)
            cboTable.AddItem tdn
        End If
    Next
    cboTable = tdn 'cosi' ti mostra l'ultima:
    'non e' molto elegante ma si puo' migliorare...
End Sub

Grazie 1000000000, e scusate l'insistenza!
(..Chi mi ha commissionato il lavoro non ci capisce nulla ed io sono solo
una matricola!)
Ci.