Newsgroup: it.comp.appl.access
Titolo: problema con il riallegare tabelle su VBA

Ciao e anzitutto grazie per l'aiuto che date .... o che diamo, fate voi
!
Ho questo problema: praticamente devo far si che una specifica tabella
collegata venga di volta in volta, dinamicamente, a seconda della
scelta che si fa (in base a una data) collegata ad un'altra, ma nello
stesso tempo il colelgamento mantega il nome originario: sto diventando
pazzo da più di una settimana. Le ho rpovate tutte !!!!!
Posto qualche riga di codice per darvi l'idea
d proviene d un'altro codice che grazie a dio funziona ed è sempre un
lunedì
Public Sub nuovasettimana(d As Date)
Dim dbs As Database, dbd As Database, rs As Recordset
Set dbs = CurrentDb
Set dbd = OpenDatabase("c:\miopercorso\DBREMOTO.mdb")
Dim cat As ADOX.Catalog
Set cat = New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection
Dim tblnuova As dao.TableDef
Dim tblsetti As ADOX.TABLE
Dim tblcntrl As dao.TableDef
Dim t As Date
Dim nomtab As String
Dim nomtabdel As String
Dim x As Integer
Dim cnn As String
Dim StrSql As String
cnn = "c:\miopercorso\DBREMOTO.mdb"
'VENGONO CREATE 7 NUOVE TABELLE IN BASE AI GIORNI DELLA SETTIMANA
d = d - 1
For x = 1 To 7
        d = d + 1
        nomtab = "S_" & YEAR(d) & IIf(Len(Month(d)) = 1, "0" &
Month(d), Month(d)) & IIf(Len(day(d)) = 1, "0" & day(d), day(d))
        Set tblnuova = dbd.CreateTableDef(nomtab)
        With tblnuova
        .Fields.Append .CreateField("GIORNOS", dbDate, 8)
        .Fields.Append .CreateField("ORARIO", dbDate)
        End With
        dbd.TableDefs.Append tblnuova
        dbd.TableDefs.Refresh
            'SELEZIONA LA TABELLA DA CANCELLARE
            Select Case Weekday(d)
            'LUNEDI
            Case Is = 2
            nomtabdel = "01LUNEDI"
            'MARTEDI
            Case Is = 3
            nomtabdel = "02MARTEDI"
            'MERCOLEDI
            Case Is = 4
            nomtabdel = "03MERCOLEDI"
            'GIOVEDI
            Case Is = 5
            nomtabdel = "04GIOVEDI"
            'VENERDI
            Case Is = 6
            nomtabdel = "05VENERDI"
            'SABATO
            Case Is = 7
            nomtabdel = "06SABATO"
            Case Is = 1
            nomtabdel = "07DOMENICA"
            End Select
            'CANCELLA LA TABELLA
            StrSql = "DROP TABLE " & nomtabdel
            dbs.Execute StrSql
            'RIASSOCIA LA TABELLA
            Set tblsetti = New ADOX.TABLE
            tblsetti.Name = nomtabdel
            Set tblsetti.ParentCatalog = cat
            tblsetti.Properties("Jet OLEDB:Create Link") = True
            tblsetti.Properties("Jet OLEDB:Link Datasource") = cnn
            tblsetti.Properties("Jet OLEDB:Remote Table Name") = nomtab
            cat.Tables.Append tblsetti
Next x
End Sub
Considerate che l'errore che mi dà è "Microsoft Jet non è stato in
grado di trovare la tabella ...." e poi il nome della tabella che
avrebbe dovuto riallegare, che invece ESISTE !!!!! ........ oltre al
fatto che dopo mi dice che praticamente avrei aperto il database come
accesso esclusivo ...... insomma sto andando ai pazzi .... help me
.......
E grazie !!!!!

 wrote in message 
news:1140892718....@j33g2000cwa.googlegroups.com...
Ciao e anzitutto grazie per l'aiuto che date .... o che diamo, fate voi
!
Ho questo problema: praticamente devo far si che una specifica tabella
collegata venga di volta in volta, dinamicamente, a seconda della
scelta che si fa (in base a una data) collegata ad un'altra
------------------------------------
Una tabella "collegata  ad un'altra?"
Intendi "relazionata" o che?
------------------------------------
, ma nello
stesso tempo il colelgamento mantega il nome originario: sto diventando
pazzo da più di una settimana. Le ho rpovate tutte !!!!!
Posto qualche riga di codice per darvi l'idea
d proviene d un'altro codice che grazie a dio funziona ed è sempre un
lunedì
-------------------------------------------
A esaminare il tuo codice c'è d'andar giù di testa!
Hai mescolato ADOX, DAO... uno dei due non bastava?
Potresti spiegarti il parole povere?
Ciao
Bruno
--------------------------------------------- 

 pazzo da più di una settimana. Le ho rpovate tutte !!!!!
Per risolvere il tuo problema dovresti poter modificare la proprietà "Remote 
Table Name" del provider Jet OLEDB.
Purtroppo, non mi risulta che tale proprietà sia modificabile 
tranquillamente mediante ADOX, infatti se ci si prova si ottiene il seguente 
errore:
    Errore di run-time '-
2147217887
 (80040e21)':
    Si sono verificati errori in un'operazione OLE DB composta da più 
passaggi.
    Controllare i singoli valori di stato OLE DB, se disponibili.
    Nessuna operazione eseguita.
Devi cancellare il collegamento esistente e crearne uno nuovo. Eccoti il 
codice.
    Dim catDB As ADOX.Catalog
    Dim tblLink As ADOX.Table
    Set catDB = New ADOX.Catalog
    Set tblLink = New ADOX.Table
    catDB.ActiveConnection = CurrentProject.Connection
    catDB.Tables.Delete "MioCollegamento"
    tblLink.Name = "MioCollegamento"
    Set tblLink.ParentCatalog = catDB
    tblLink.Properties("Jet OLEDB:Link Datasource") = 
"percorsocompletodeldatabasecontenenteidati"
    tblLink.Properties("Jet OLEDB:Remote Table Name") = 
"nomedellatabellafisicadacollagare"
    tblLink.Properties("Jet OLEDB:Create Link") = True
    catDB.Tables.Append tblLink
    Set catDB = Nothing
    Set tblLink = Nothing
-- 
PBsoft di Gabriele Bertolucci
www.pbsoft.it