Newsgroup: it.comp.lang.visual-basic
Titolo: [Lungo] Dump di file MDB in SQL usabile con RDBM server e pagine non ASP

Un paio di giorni fa ho prelevato due sorgenti che, se inseriti in un
modulo di un database di access oppure fatti partire tramite macro,
consentono (o, meglio, consentirebbero) di trasferire comodamente in un
file di istruzioni SQL "pure" il contenuto di una tabella, in modo tale
poi da poterla dare in pasto ad un DB relazionale interfacciabile via
PHP in un server HTTP.
Perň...Problema: quando tento di compilare i sorgenti ottengo un errore
che dice "tipo di dato sconosciuto" ed evidenzia il tipo "Database" e,
se commento quella riga, lo stesso problema lo ottengo sul tipo
"Recordset".
Ho provato con tre differenti versioni di Access (97, 2000 e XP - dio
santo che faticaccia :() ma ottengo sempre lo stesso risultato negativo.
Che tipo di inghippo c'č? Ho installato Access con tutte le funzioni ed
in modo tale che giri completamente da disco fisso, tant'č che non mi č
stato mai richiesto alcun componente mancante presente su CD.
Vi copincollo la parte iniziale dei due sorgenti, nella quale rilevo
l'errore:
(1 - da usare con macro)
Function export_mysql()
 
    Dim dbase As Database, tdef As Recordset, i As Integer, fd As
Integer, tname As String, j As Integer, iname As String
    Dim s As String, found As Integer, stuff As String, idx As Index, k
As Integer, f As Integer, fld As Field, istuff As String
    Set dbase = CurrentDb()
 
    Open "c:\temp\mysqldump.txt" For Output As #1
[... eccetera ...]
(2 - da usare con modulo)
Option Compare Database
Option Explicit
#Const OFFICE97 = 0    ' 0=FALSE (Office95 assumed)   1=TRUE
#Const DOCYESNO = 1    ' 1=Output table/field description  0=Don't
Private Const ESQL_VERSION As String = "2.1"
Private Const DB_ENGINE As String = "MY"  ' USE ONLY "M1" (mSQL v1),
"M2" (mSQL v2) or "MY" (MySQL)
Private Const DB_NAME As String = ""  ' Use empty string for current.
Else use filename or DSN name of database to export
Private Const DB_CONNECT As String = ""  ' Used only if above string is
not empty
Private Const MSQL_64kb_AVG As Long = 2048  ' ALWAYS < 65536 (to be
consistent with MS Access). Set to max expected size of Access MEMO
field (to preserve space in mSQL v1)
Private Const WS_REPLACEMENT As String = "_"  ' Use "" to simply eat
whitespaces in identifiers (table and field names)
Private Const IDENT_MAX_SIZE As Integer = 19  ' Suggest 64. Max size of
identifiers (table and field names)
Private Const PREFIX_ON_KEYWORD As String = "_"  ' Prefix to add to
identifier, if it is a reserved word
Private Const SUFFIX_ON_KEYWORD As String = ""  ' Suffix to add to
identifier, if it is a reserved word
Private Const PREFIX_ON_INDEX As String = "ix"  ' Prefix to add to index
identifier, to make it unique (mSQL v2)
Private Const SUFFIX_ON_INDEX As String = ""  ' Suffix to add to index
identifier, to make it unique (mSQL v2)
Private Const ADD_SQL_FILE As String = "c:\temp\esql_add.txt"  ' Use
empty if open on #1. Will be overwritten if exists!
Private Const DEL_SQL_FILE As String = "c:\temp\esql_del.txt"  ' Use
empty if open on #2. Will be overwritten if exists!
Private Const LINE_BREAK As String = "\n"  ' Try "<br>". String to
replace line breaks in text fields
Private Const QUERY_SEPARATOR As String = "\g"  ' Terminator/separator
of SQL queries (to instruct some monitor program to execute them)
Private Const COMMENT_PREFIX As String = "#"  ' Use empty string for no
comments
Private Const DISPLAY_WARNINGS As Boolean = True  ' False to output the
warnings to the files, only
Private Const DATE_AS_STR As Boolean = True  ' False to use real number
data type for date, time and timestamp (in mSQL only)
Private Const PARA_INSERT_AFTER As Integer = 3  ' Field count after
which print INSERTs different lines
Private Const INDENT_SIZE As Integer = 5  ' Number of spaces on indents
Private warnings As String  ' Not an option: do not set in any way
Function exportSQL()
On Error GoTo exportSQL_error
    Dim cdb As Database
    Dim ctableix As Integer, ctablename As String
#If DOCYESNO Then
    Dim nam, des, ast As String
#End If
    If DB_NAME = "" Then
        Set cdb = CurrentDb()
    Else
        Set cdb = OpenDatabase(DB_NAME, False, True, DB_CONNECT) '
Shared, read-only
    End If
[ ... eccetera ...]

 "Recordset".
Metti nei riferimenti del progetto DAO 3.6

 Metti nei riferimenti del progetto DAO 3.6
ehm...
come si fa? la mia conoscenza di vb č nulla ^^;;

 come si fa? la mia conoscenza di vb è nulla ^^;;
Credo anche la tua voglia di lavorare, visto che con l'help di VB, o anche
semplicemente sfogliando il menu, trovavi subito la soluzione:
Progetto -> Riferimenti -> Spunta quello che ti serve.
Alberto

 Progetto -> Riferimenti -> Spunta quello che ti serve.
se lo sfogliavo direttamente così non lo trovavo, perchè casomai è
strumenti->riferimenti

 strumenti->riferimenti
vb6 usa: project | references
--
ciao, j.
www.sundaysw.com

 strumenti->riferimenti
Non entro nel merito di quanto ho cuttato, ma con VB6 (SP5) la voce di menù
è proprio Progetto (non Strumenti) poi Riferimenti. Che VB hai? Hai risolto?

 strumenti->riferimenti
In VB è Progetto->Riferimenti.
Se stai usando Access sei decisamente nel NG sbagliato.
Ti sapeva fatica anche cercare il NG di Access?
Alberto