Newsgroup: it.comp.appl.access
Titolo: Access 2007 Creazione Tabella esterna da VBA  genera errore

In Un DB  (FE  + BE)  in formato access 2000   un pulsante di una
maschera  chiama la seguente funzione residente in un modulo ( crea un
database e crea una tabella)
Sub subTempDBScadenzeCreate()
      Dim db As Database
10        Set db = CurrentDb
      Dim tdfNew As TableDef, rs As Recordset, fldMioCampo As Field
          Dim wrkDefault As Workspace
          Dim dbsTemp As Database, strTempDatabase As String
20        Set wrkDefault = DBEngine.Workspaces(0)
30          strTempDatabase = fReturnTempDir & Left$(GetFile(db.Name),
Len(GetFile(db.Name)) - 4) & "_Scadenze.mdb"
40        If Dir(strTempDatabase) <> "" Then Kill strTempDatabase
50        Set dbsTemp = wrkDefault.CreateDatabase(strTempDatabase,
dbLangGeneral)
          Dim strTableName As String
60        strTableName = "tblTempScadenze"
70        If TableExists(strTableName) Then
80           CurrentDb.TableDefs.Delete strTableName
90        End If
100       Set tdfNew = dbsTemp.CreateTableDef(strTableName)
110       With tdfNew
120           .Fields.Append .CreateField("IdMatricola", dbText, 15)
130           .Fields.Append .CreateField("Descrizione", dbText)
'099200
140           .Fields.Append .CreateField("IdManutenzionePreventiva",
dbLong)
150           .Fields.Append .CreateField
("IdManutenzionePreventivaKmOre", dbLong) '099305
160           .Fields.Append .CreateField("ManPreventiva", dbText)
170           .Fields.Append .CreateField("Data", dbDate)
180           .Fields.Append .CreateField("IdEsiti", dbLong)
190           .Fields.Append .CreateField("Ricambi", dbText) ' 099203
era dbCurrency
200           .Fields.Append .CreateField("Commento", dbText)
210           .Fields.Append .CreateField("TempoImpiegato(h)",
dbSingle)
220           .Fields.Append .CreateField("Operatore", dbText)
230           .Fields.Append .CreateField("IdFornitori", dbText, 5)
240           .Fields.Append .CreateField("Contaore", dbSingle)
250           .Fields.Append .CreateField("Scadenza", dbDate) ' 10
260           .Fields.Append .CreateField("CostoRic", dbCurrency)
270           .Fields.Append .CreateField("CostoInt", dbCurrency)
280           .Fields.Append .CreateField("FlagRegistra", dbBoolean)
290           .Fields.Append .CreateField("Periodicità", dbSingle)
300           .Fields.Append .CreateField("Utilizzo", dbText)
310           .Fields.Append .CreateField("IdSchedule", dbLong)
'099203
320           .Fields.Append .CreateField("IdScheduleKmOre", dbLong)
'099305
330           .Fields.Append .CreateField("Ricorre", dbText) '099203
340           .Fields.Append .CreateField("Dreg", dbDate)
350           .Fields.Append .CreateField("Utente", dbText)
360           .Fields.Append .CreateField("PC", dbText)
370           .Fields.Append .CreateField("LastUpdate", dbDate)
380           .Fields.Append .CreateField("Richiesta", dbDate) '099305
390           .Fields.Append .CreateField("RichiestaKmOre", dbLong)
'099305
400           dbsTemp.TableDefs.Append tdfNew
410       End With
          'tdfNew.CreateIndex.Fields
420       dbsTemp.TableDefs.Refresh
          Dim tdfLinked As TableDef
430       Set tdfLinked = CurrentDb.CreateTableDef(strTableName)
440       tdfLinked.Connect = ";DATABASE=" & strTempDatabase
450       tdfLinked.SourceTableName = strTableName
460       CurrentDb.TableDefs.Append tdfLinked
470       CurrentDb.TableDefs.Refresh
480       RefreshDatabaseWindow
490       Set rs = CurrentDb.OpenRecordset(strTableName,
dbOpenDynaset, dbAppendOnly)
500       rs.Close
510       dbsTemp.Close
520       CurrentDb.TableDefs.Refresh
530       Set rs = Nothing
540       Set dbsTemp = Nothing
tagExit:
550       Exit Sub
tagError:
560       DoCmd.Hourglass False
570       If Err.Number = 70 Then
580           MsgBox "Impossibile Cancellare il database temporaneo, è
bloccato." & vbCrLf & vbCrLf & _
                  "Importazione cancellata."
590       Else
600            MsgBox "linea  " & erl & vbCrLf & Err.Number & vbCrLf &
vbCrLf & Err.Description, vbExclamation
610       End If
End Sub
il tutto funziona da tempo correttamente utilizzando sia Access 2000,
XP, 2003.
Con access 2007  genera un errore  (linea 280 è la chiamata alla
funzione)
Linea : 280 - Microsoft Office Access non supporta il collegamento a
un database di Access o a una cartella di lavoro di Microsoft Office
Excel salvata in una versione successiva al formato di database
corrente.
Se converto il DB (FE)  in formato access 2007  (accdb)  il tutto
funziona .
Vorrei evitare se possibile di dover gestire  più versioni , per ovvi
motivi in caso di aggiornamenti
grazie


Ho appurato che l'errore compare alla linea 460
Access 2007 genera il db in formato 2007  e vieta il collegamento a
una tabella in tale  formato dato che il collegamento dovrebbe
avvenire a un FE in formato Access 2000
Riproporrò  in nu nuovo post  l'argomento  <Access 2007 E' possibile
da codice creare un db  con una tabella in formato Access 2000>