salve e bun giorno.
mi potreste testare questo codice?
Dim vConnessione As New Connection
Dim vPercorso As String ' variabile per il percorso in cui creare il db
Dim vDatabase As String ' variabile per il nome che diamo al database
Dim vTabella As Table
Dim vTabellaUno As String ' variabile per la creazione della tabella UNO e dei campi
Dim vRisultato As Result
Dialog.Path = Settings["LastPlaylistFile", User.Home] & "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
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
With vConnessione
.Type = "sqlite3" ' indicazione del tipo di database da utilizzare
.Host = vPercorso
.Login = ""
.Password = ""
End With
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
fino a pochi giorni fa mi funzionava .. ora non riesce a creare il database .....
e' un pezzo, prima dovrebbe creare il file/database e poi la tabella dentro .. a me dopo l'open da errore ....
la parte mancante e':
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
nel mio caso:
vpercorso="/home/allegfede"
vConnessione.host=vpercorso
vdatabase="test.sqlite3"
e DOVREBBE crearlo con:
vConnessione.Databases.Add(vDatabase)
ma mi dice:
cannot create database, unable to open the database file in FMain etc etc. ....
gambas 3.10.0
SONO UN DEFICIENTE .....
sul mio pc ci sono piu' utenti .... il dialog mi apriva per default la cartella /home perche' la sequente riga era sbagliata e puntava ad una directory inesistente:
Dialog.Path = Settings["LastPlaylistFile", User.Home] & "Playlist_" & Format(Now, "yyyymmdd_hhnnss") & ".sqlite3"
quindi .... selezionavo di scrivere nella directory: /home/utente1 ma ero in esecuzione con l'utente2 .......
che deficiente ....... Scusate per la perdita di tempo ....
PS: andava aggiunte la / dopo user.home :D ovvero cosi':
Dialog.Path = Settings["LastPlaylistFile", User.Home] & "/Playlist_" & Format(Now, "yyyymmdd_hhnnss") & ".sqlite3"