Diski versione 2009.a [ultimo supporto]

Premesso che anche se in ritardo, lo sviluppo della nuova versione basata su FileMaker continua e galoppa, l’ultimo rilascio della generazione precedente di Diski, ovvero quella basata sul back-end in PostgreSQL e front-end in Access, presenta un’anomalia che non verrà risolta con un nuovo rilascio. Questo perchè tutte le energie sono impiegate nel faticoso sviluppo della nuova generazione e perchè si tratta di un bug minore facilmente risolvibile. I kit di installazione e aggiornameto li trovate ancora a questo link, restano utili per l’upgrade all’ultima versione che è l’unica che sarà supportata per la migrazione alla nuova generazione di Diski basata su FileMaker.

In quella che sarebbe stata la versione successiva, ovvero la versione 2009.b, di questa generazione (che ripeto non avrà mai luce) era stato pianificato di:

  • Elenco tablespace
  • Gestione delle tablespace da pannello amministrativo
  • Move degli oggetti di sistema alla nuova tablespace
  • Integrazione backup usando il front-end di PostgreSQL
  • Griglie ridimensionabili
  • Righe di colore alternato delle righe nelle griglie
Per l’elenco delle tablespace vi posso suggerire questa query che avevo utilizzato per i primi test:
SELECT spcname AS “tablespace”,
pg_catalog.pg_get_userbyid(spcowner) AS “proprietario”,
spclocation AS “ubicazione”,
spcacl AS “accesso”,
pg_catalog.shobj_description(oid, ‘pg_tablespace’) AS “descrizione”
FROM pg_catalog.pg_tablespace
ORDER BY 1;
Mentre per creare e cancellare le tablespace:
create tablespace diski_tbs_1 owner diski location ‘/diski_tbs_1’;
drop tablespace diski_tbs_1 ;
Riguardo il bug menzionato prima, potete correggerlo in questo modo. Avete bisogno di Access completo, dal runtime non è possibile modificare i moduli.
L’errore è nel modulo usato dal pulsante di esportazione che si trova nel form “export_frm”, l’evento è ovviamente il click. Basta sostituire il codice sorgente presente con quello che segue:
Private Sub esporta_Click()

Dim originali As Boolean
Dim copie As Boolean
Dim tracce As Boolean
Dim ascolti As Boolean
Dim pulizie As Boolean
Dim artisti As Boolean
Dim caratteristiche As Boolean
Dim dbobj As Boolean
Dim log As Boolean
Dim allegati As Boolean

originali = Forms!export_frm!originali
copie = Forms!export_frm!copie
tracce = Forms!export_frm!tracce
ascolti = Forms!export_frm!ascolti
pulizie = Forms!export_frm!pulizie
artisti = Forms!export_frm!artisti
caratteristiche = Forms!export_frm!caratteristiche
dbobj = Forms!export_frm!dbobj
log = Forms!export_frm!log
allegati = Forms!export_frm!allegati

If originali = False And copie = False And ascolti = False And pulizie = False And tracce = False And artisti = False And caratteristiche = False And dbobj = False And log = False And allegati = False Then
If MsgBox(getobj(“descrizione”, “messaggio”, “obj”, “msgnotseldoc”, “messaggio non disponibile.”), vbOKOnly + vbCritical, “Messaggio:”) = vbOK Then
Exit Sub
End If
End If

Dim FilePath As Variant
FilePath = cmdlg_file(“dftexpath”, “export”)

If IsNull(FilePath) Or IsError(FilePath) Or FilePath = “” Then
If MsgBox(getobj(“descrizione”, “messaggio”, “obj”, “msgbadfile”, “messaggio non disponibile.”), vbOKOnly + vbCritical, “Messaggio:”) = vbOK Then
Exit Sub
End If
Exit Sub
End If

If Right(FilePath, 4) <> “.xls” Then
FilePath = FilePath & “.xls”
End If

Dim timestr As String
timestr = Time()
Dim datastr As String
datastr = Date

Dim dbs As Database
Set dbs = CurrentDb

Dim qdf As DAO.QueryDef, Qry As String

If originali = True Then
Qry = “SELECT originali_tab.id, originali_tab.titolo, originali_tab.protezione, originali_tab.genere, originali_tab.casa_discografica, originali_tab.data_pubblicazione, originali_tab.data, originali_tab.formato, originali_tab.codice_catalogo, originali_tab.suono, originali_tab.ristampa, originali_tab.data_ristampa, originali_tab.condizione, originali_tab.stato, originali_tab.quotazione, originali_tab.nazione, originali_tab.giudizio, originali_tab.bootleg, originali_tab.eseguita_copia, originali_tab.codice_copia, originali_tab.note, originali_tab.custodia, originali_tab.durata, originali_tab.provenienza, originali_tab.ubicazione, originali_tab.text, data2text([originali_tab].[data_ins]) AS data_ins, originali_tab.user_ins, originali_tab.subgenere, originali_tab.acquisto, originali_tab.condizione_cover, originali_tab.obj FROM originali_tab ORDER BY originali_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“originali_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “originali_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘o’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “originali_” & getuser
End If

If copie = True Then
Qry = “SELECT copie_tab.id, copie_tab.titolo, copie_tab.protezione, copie_tab.data, copie_tab.genere, copie_tab.suono, copie_tab.formato, copie_tab.custodia, copie_tab.formato_originale, copie_tab.stato, copie_tab.note, copie_tab.giudizio, copie_tab.condizione, copie_tab.durata, copie_tab.provenienza, copie_tab.strumento, copie_tab.text, copie_tab.personalizzata, copie_tab.ubicazione, data2text([copie_tab].[data_ins]) AS data_ins, copie_tab.user_ins, copie_tab.subgenere FROM copie_tab ORDER BY copie_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“copie_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “copie_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘c’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “copie_” & getuser
End If

If tracce = True Then
Qry = “SELECT tracce_tab.id, tracce_tab.riferimento_id, tracce_tab.posizione, tracce_tab.titolo, tracce_tab.durata, tracce_tab.side, tracce_tab.tipologia, tracce_tab.note, data2text([tracce_tab].[data_ins]) AS data_ins, tracce_tab.user_ins, tracce_tab.obj, tracce_tab.data FROM tracce_tab ORDER BY tracce_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“tracce_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “tracce_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘t’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “tracce_” & getuser
End If

If ascolti = True Then
Qry = “SELECT ascolti_tab.id, ascolti_tab.riferimento_id, ascolti_tab.tipologia, ascolti_tab.data, ascolti_tab.ora, data2text([ascolti_tab].[data_ins]) AS data_ins, ascolti_tab.user_ins, ascolti_tab.note, ascolti_tab.strumento, ascolti_tab.formato FROM ascolti_tab ORDER BY ascolti_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“ascolti_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “ascolti_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘a’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “ascolti_” & getuser
End If

If pulizie = True Then
Qry = “SELECT pulizie_tab.id, pulizie_tab.riferimento_id, pulizie_tab.tipologia, pulizie_tab.data, pulizie_tab.ora, data2text(pulizie_tab.data_ins) AS data_ins, pulizie_tab.user_ins, pulizie_tab.note, pulizie_tab.strumento, pulizie_tab.formato, pulizie_tab.peso FROM pulizie_tab ORDER BY pulizie_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“pulizie_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “pulizie_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘p’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “pulizie_” & getuser
End If

If artisti = True Then
Qry = “SELECT artisti_tab.id, artisti_tab.riferimento_id, artisti_tab.tipologia, artisti_tab.ruolo, artisti_tab.note, artisti_tab.artista, data2text([artisti_tab].[data_ins]) AS data_ins, artisti_tab.user_ins FROM artisti_tab ORDER BY artisti_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“artisti_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “artisti_” & getuser, FilePath, True, “”
DoCmd.DeleteObject acQuery, “artisti_” & getuser
If getobj(“descrizione”, “impostazione”, “obj”, “enalstnm”, “0”) <> “0” Then
Qry = “SELECT artisti_01_vw.id, artisti_01_vw.riferimento_id, artisti_01_vw.tipologia, artisti_01_vw.ruolo, artisti_01_vw.note, artisti_01_vw.artista, artisti_01_vw.nome1, artisti_01_vw.nome2, data2text([artisti_01_vw].[data_ins]) AS data_ins, artisti_01_vw.user_ins FROM artisti_01_vw ORDER BY artisti_01_vw.id”
Set qdf = CurrentDb.CreateQueryDef(“artisti_01_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “artisti_01_” & getuser, FilePath, True, “”
DoCmd.DeleteObject acQuery, “artisti_01_” & getuser
End If

dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘b’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
End If

If caratteristiche = True Then
Qry = “SELECT caratteristiche_tab.id, caratteristiche_tab.riferimento_id, caratteristiche_tab.caratteristica, data2text(caratteristiche_tab.data_ins) AS data_ins, caratteristiche_tab.user_ins, caratteristiche_tab.tipologia FROM caratteristiche_tab ORDER BY caratteristiche_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“caratteristiche_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “caratteristiche_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘r’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “caratteristiche_” & getuser
End If

If dbobj = True Then
Qry = “SELECT dbobj_tab.id, dbobj_tab.obj, dbobj_tab.classe, dbobj_tab.tipologia, dbobj_tab.descrizione, dbobj_tab.note, data2text(dbobj_tab.data_ins) AS data_ins, dbobj_tab.user_ins FROM dbobj_tab ORDER BY dbobj_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“dbobj_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “dbobj_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘d’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “dbobj_” & getuser
End If

If log = True Then
Qry = “SELECT log_tab.riferimento_id, log_tab.tipologia, log_tab.operazione, log_tab.user_ins, data2text([log_tab].[data_ins]) AS data_ins, log_tab.[_acquisto], log_tab.[_artista], log_tab.[_bootleg], log_tab.[_caratteristica], log_tab.[_casa_discografica], ” & _
“log_tab.[_classe], log_tab.[_codice_catalogo], log_tab.[_codice_copia], log_tab.[_condizione], log_tab.[_condizione_cover], log_tab.[_peso], log_tab.[_custodia], log_tab.[_data_pubblicazione], log_tab.[_data], log_tab.[_data_ristampa], log_tab.[_descrizione], ” & _
“log_tab.[_durata], log_tab.[_eseguita_copia], log_tab.[_formato], log_tab.[_formato_originale], log_tab.[_genere], log_tab.[_giudizio], log_tab.[_nazione], log_tab.[_note], log_tab.[_posizione], log_tab.[_obj], log_tab.[_ora], log_tab.[_personalizzata], log_tab.[_provenienza], ” & _
“log_tab.[_quotazione], log_tab.[_riferimento_id], log_tab.[_ristampa], log_tab.[_side], log_tab.[_stato], log_tab.[_strumento], log_tab.[_subgenere], log_tab.[_suono], log_tab.[_text], log_tab.[_tipologia], log_tab.[_titolo], log_tab.[_ubicazione], IIf(IsNull([log_tab].[_data_ins]),”,data2text([log_tab].[_data_ins])) AS _data_ins, log_tab.[_user_ins], log_tab.[_ruolo], log_tab.[_protezione] FROM log_tab order by log_tab.data_ins”
Set qdf = CurrentDb.CreateQueryDef(“log_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “log_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘l’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “log_” & getuser
End If

If allegati = True Then
Qry = “SELECT allegati_tab.id, allegati_tab.riferimento_id, allegati_tab.tipologia, allegati_tab.obj, allegati_tab.note, data2text([allegati_tab].[data_ins]) AS data_ins, allegati_tab.user_ins FROM allegati_tab order by allegati_tab.id”
Set qdf = CurrentDb.CreateQueryDef(“allegati_” & getuser)
qdf.SQL = Qry
DoCmd.TransferSpreadsheet acExport, 8, “allegati_” & getuser, FilePath, True, “”
dbs.Execute “INSERT INTO log_tab (riferimento_id, tipologia, operazione, [_obj], [_custodia]) Values (0, ‘f’, ‘x’, ‘” & FilePath & “‘, getpcname())”, dbFailOnError
DoCmd.DeleteObject acQuery, “allegati_” & getuser
End If

If MsgBox(“processo di esportazione iniziato il ” & datastr & ” alle ” & timestr & ” e terminato il ” & Date & ” alle ” & Time() & ” nel file ” & FilePath & ” dalla stazione con nome ” & getpcname() & “.”, vbOKOnly + vbInformation, “Messaggio:”) = vbOK Then
GoTo fine
End If
fine:
End Sub

Questo sarà, a meno di eventi eccezionali, l’ultimo aggiornamento per la precedente generazione di Diski. Ovviamente ci sarà pieno supporto per la migrazione degli archivi esistenti alla nuova versione basata su FileMaker. Se non siete in grado di applicare manualmente la correzione riportata vi consiglio di aspettare il rilascio della nuova versione, cmq l’errore è marginale e riguarda solo l’esportazione in Excel.

Advertisements

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...