19/05/2023: A causa di un errore sono stati cancellati, insieme ad account creati da bot, alcuni account legittimi. Si prega di leggere qui: https://www.gambas-it.org/smf/index.php?topic=9733.0
Public Sub Button_SavePlaylist_Click()Dim vConnessione As New ConnectionDim vPercorso As String ' variabile per il percorso in cui creare il dbDim vDatabase As String ' variabile per il nome che diamo al databaseDim vTabella As TableDim vTabellaUno As String ' variabile per la creazione della tabella UNO e dei campiDim vTabellaDue As String ' variabile per la creazione della tabella DUE e dei campiDim vRisultato As ResultDim I As Integer If GridView_Media.Rows.Count = 0 Then Return Dialog.Path = "Playlist_" & Format(Now, "yyyymmdd-hhnnss") & ".sqlite3" Dialog.Filter = ["*.sqlite;*.sqlite3", "sqlite format database files"] If Dialog.SaveFile() Then Return Endif 'se siamo qui' allora abbiamo deciso di creare un nuovo file per la playlist If File.Ext(Dialog.Path) = "" Then Dialog.Path = Dialog.Path & ".sqlite3" Endif vPercorso = File.Dir(Dialog.Path) ' definisce il percorso del database vDatabase = File.Name(Dialog.Path) ' definisce il nome del database vTabellaUno = "CREATE TABLE 'PlaylistContent'" & ' nome della tabella e dei campi che si andrà a creare "('id' INTEGER PRIMARY KEY," & ' chiave primaria "'Time' VARCHAR(8) Default Null," & 'nome del campo, tipo e valore predefinito "'Path' VARCHAR(55) Default Null," & "'MediaType' VARCHAR(20) Default Null," & 'STATUS e' una proprieta' locale che viene definita al caricamento "'lenght' VARCHAR(20) Default Null," & "'WARN' VARCHAR(55) Default Null);" 'MEDIA e' una proprieta' locale che viene definita al caricamento With vConnessione .Type = "sqlite3" ' indicazione del tipo di database da utilizzare .Host = vPercorso .Login = "" .Password = "" End With If Exist(Dialog.Path) Then ' esiste il file della playlist, chiedo se cancellarlo o meno Select Case Message.Question("Do you want to overwrite playlist file?", "YES", "NO", "CANCEL") Case 2 Return Case 3 'in ogni altro caso esco dalla procedura (verificare se devo comunque riscrivere STOP Return End Select End If 'se siamo qui' vogliamo scrivere il file della playlist vConnessione.Open() ' apre la connessione If Not vConnessione.Databases.Exist(vDatabase) Then ' verifica che il db non esista già vConnessione.Databases.Add(vDatabase) ' crea il database vConnessione.Close() ' chiude la connessione vConnessione.Name = vDatabase ' alla connessione assegna il nome del database vConnessione.Open() ' riapre la connessione vRisultato = vConnessione.Exec(vTabellaUno) ' aggiunge al database la tabella con i campi, come sopra definito Wait 1 For i = 0 To GridView_Media.Rows.Count - 1 'inserisci un nuovo record per ogni riga vRisultato = vConnessione.Create("PlaylistContent") vRisultato["id"] = i vRisultato["Time"] = GridView_Media[i, 0].Text vRisultato["Path"] = GridView_Media[i, 1].Text vRisultato["MediaType"] = GridView_Media[i, 2].Text vRisultato["lenght"] = GridView_Media[i, 4].Text vRisultato["WARN"] = GridView_Media[i, 5].Text vRisultato.Update vConnessione.Commit Next Endif vConnessione.Close() 'chiude la connessione Message.Info("Playlist file created in:" & gb.crlf & Dialog.Path, "ok")End
Io vorrei che il file di database avesse una forma tipo: playlist_24-12-2017_214500.sqlite ma mi da' errore nel nome del databaseAnche lo genero senza estensione: "playlist_24-12-2017_214500", gambas mi restituisce l'errore sopra citato.Se il nome del "file" di database e' "pippo" nessun problema e mi scrive il file di database pippo nella cartella opportuna .....
yes, e' il "-" , dovro' fare un parser perche' il nome del file puo' essere arbitrariamente scelto (il mio formato e' un suggerimento)grazie cari. Pero' che sqlite abbia delle ideosincrasie sul nome del file (diverse da quelle di linux o del os dove e' in esecuzione) e' una pecca non di poco conto ....