Italian anche ChatGpt fallisce, creare un file di testo da un database sqlite.

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ciao, come da titolo ho provato più volte a cercare un codice che mi esca fuori da un database sqlite i prodotti che sono all'interno e le volevo poi trasferire su un documento di testo, il database e composta da tabelle chaimate:
field1
field2
field3
field4
ad ogni tabella corrisponde:
data1
data2
data3
data4
ho chiesto a chatgpt di estrarre il tutto e di crearmi un documento di testo in questo modo:
Pizza margherita -Euro 6.50
Pizza Napoletana -Euro 7.00

e così via, praticamente chat gpt mi realizza tutto ma al richiamare questo documento nel log visualizzo:
errore nella lettura della tabella: field1
errore nella lettura della tabella: field2

ovviamente il database viene inzializzato
ma stranamente non va
allego il codice di chat gpt
B4X:
Private Sub btncreamenu_Click
    dbSQL.Initialize(File.DirInternal, "comande.db", True)
    EstraiTuttoIlMenu
End Sub

Private Sub btncreamenu_LongClick
    
    Wait For (xui.Msgbox2Async("Sei sicuro di voler eliminare il menù veloce?", "ELIMINAZIONE MENU' VELOCE", "SI", "CANCELLA", "NO", Null)) Msgbox_Result (Result As Int)
    If Result = xui.DialogResponse_Positive Then
        mp1.Load(File.DirAssets,"click.wav")
        mp1.Play
        If File.Exists(File.DirInternal,  "menu.txt") Then
            File.Delete(File.DirInternal, "menu.txt")
            MsgboxAsync("Menù veloce eliminato riavvia il programma","ESEGUITO")
            
        Else
            MsgboxAsync("Nessun Menù veloce da eliminare","AVVISO")
        End If
    End If
    
End Sub
Sub EstraiTuttoIlMenu
    Dim output As StringBuilder
    output.Initialize

    ' Estrai da field1 a field9
    For i = 1 To 9
        EstraiDaTabella("field" & i, "data" & i, output)
    Next

    ' Estrai anche da field39
    EstraiDaTabella("field39", "data39", output)

    ' Scrivi nel file menu.txt
    File.WriteString(File.DirInternal, "menu.txt", output.ToString)
    ToastMessageShow("File menu.txt creato!", True)
End Sub

Sub EstraiDaTabella(nomeTabella As String, nomeColonna As String, output As StringBuilder)
    Try
        Dim cursor1 As Cursor = SQL1.ExecQuery("SELECT " & nomeColonna & " FROM " & nomeTabella)
        For r = 0 To cursor1.RowCount - 1
            cursor1.Position = r
            Dim voce As String = cursor1.GetString(nomeColonna)
            output.Append(voce).Append(CRLF)
        Next
        cursor1.Close
    Catch
        Log("Errore nella lettura della tabella: " & nomeTabella)
    End Try
End Sub
qualcuno ha idea del perchè non vada?
ancora più strano e che all'apertura dell'app nella activity principale ho inserito un log che mi cercasse il file menu.txt
con una istruzione if e dei log sia se lo trova sia se non lo trova ma nel log non legge nemmeno i log che ho creato per capire cosa succede.
 

drgottjr

Expert
Licensed User
Longtime User
sarebbe utile sapere qual è l'errore segnalato. (un messaggio fatto a mano non serve). lascia che l'app si impalli. puoi aggiungere il try/crash piu tardi
 

Xfood

Expert
Licensed User
io direi, fai un piccolo progetto che alleghi qui , con un piccolo db sqlite , popolando solo delle righe tipiche, cosi si puo lavorare su un esempio e aiutarti a risolvere il problema
 

Daestrum

Expert
Licensed User
Longtime User
Have you checked that the query actually returns a result?
 

LucaMs

Expert
Licensed User
Longtime User
1748089455882.png


1748089509311.png


Fatto in quel modo, significa che dovresti avere 9 tabelle, da field1 a field9 (pessimi nomi, semmai table1/table2, benché sarebbero quasi altrettanto "brutti") e ogni tabella dovrebbe avere un solo campo (colonna) e quindi non sarebbe nemmeno necessario/utile che il nome di questo campo cambi in ogni tabella, ovvero si chiami nomeColonna1 nella field1, nomeColonna2 nella field2, etc. Tanto varrebbe che il nome fosse Colonna in tutte le tabelle.

Detto questo, cosa vuoi salvare nel database? Le "comande" (quanto non mi piace questo nome 😄; so (mi pare) che si usi, nei ristoranti, ma Ordinazione sarebbe davvero meglio)?
A cosa corrispondono le 9 tabelle? Una per tavolo? Uhm, forse no, a meno che tu non stia sviluppando per un unico ristorante che abbia esattamente e solo 9 tavoli.
Una per comanda? E perché dovrebbero essere precisamente 9?

Se devi salvare e recuperare solo ciò che hai scritto nel primo post ed i dati stato esclusivamente nello smartphone del cameriere (o al massimo vengano poi inviati ad un server centrale), visto anche che non conosci i DB, puoi anche salvare dei file di testo, uno per ogni "comanda".

Insomma, spiega cosa vorresti salvare "in locale" (dispositivo del cameriere) e se attualmente c'è già un server centrale che debba ricevere dati dai dispositivi.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Dovessi (io) "immaginare" un sistema di menu per un ristorante, mi verrebbe davvero tanta roba in testa.

Il server dovrebbe avere almeno una tabella di "magazzino" per i "componenti" delle pietanze, diciamo una tabella "Ingredienti".
In questa tabella, il nome dell'ingrediente, la disponibilità in magazzino (Quantità), le date di scadenza, etc.
Questa tabella potrebbe essere in relazione ad un'altra, Pietanze; farebbe comodo al cuoco. Avrebbe il nome della pietanza ed associato un elenco degli "Ingredienti".
Avrebbe, inoltre, il prezzo di vendita.
Server e client avrebbero la tabella "Comande". Questa avrebbe (ci sto pensando al volo), un IDComanda, IDCameriere, IDTavolo... no, ci sarebbero dati ripetuti.
"Comanda" dovrebbe avere solo NomePietanza; una seconda tabella, associata a questa, dovrebbe avere quei 3 campi, IDComanda, IDCameriere, IDTavolo; diciamo di nome "Comande", anche se non mi piace.


Va beh, andrebbe pensato bene.
 
Top