Italian Sql Insert

udg

Expert
Licensed User
Longtime User
Sostituisci con questi
B4X:
Sub Fetchinserimento
Dim scassaobanca As String
Dim query AsString
If RadioButton1.Checked = True Then
   scassaobanca = "cassa"
Else
   scassaobanca ="banca"
End If
entrata = "entrata"
'query di test
'query=$"INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) 'VALUES ('2017-03-21','una descrizione','cassa','entrata','Utenze','123.45');"$

'query da form
query=$"INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('${EditText7.text}','${EditText8.text}','${scassaobanca}','${entrata}','${Spinner3.GetItem}','${EditText9.text}');"$
Log(query)
ExecuteRemoteQuery(query,"inserisci")
End Sub


Sub JobDone(Job AsHttpJob)
ProgressDialogHide
If Job.Success Then
   Dim res As String
   res = Job.GetString
   Log("Response from server: " & res)
   Dim parser As JSONParser
   parser.Initialize(res)
  Select Job.JobName
     Case "entrate"
        Dim COUNTRIES As List
        COUNTRIES = parser.NextArray
        For i = 0 To COUNTRIES.Size - 1
           Dim m As Map = COUNTRIES.Get(i)
           Dim tl As TwoLines
           tl.First = m.Get("data")
           tl.Second = m.Get("euro")
           ListView1.AddTwoLines2(tl.First, tl.Second, tl)
       Next
    Case "uscite"
        Dim COUNTRIES As List
        COUNTRIES = parser.NextArray
        For i = 0 To COUNTRIES.Size - 1
          Dim m As Map = COUNTRIES.Get(i)
          Dim tl As TwoLines
          tl.First = m.Get("data")
          tl.Second = m.Get("euro")
          ListView2.AddTwoLines2(tl.First, tl.Second, tl)
        Next
    Case "inserisci"
  End Select
Else
  Log(Job.ErrorMessage)
  ToastMessageShow("Error: " & Job.ErrorMessage, True)
End If
Job.Release
End Sub

Nota: ho solo copiato il tuo codice sistemando gli errori sintattici ma essendomi servito solo dell'editor del forum non è che sia necessariamente funzionante senza qualche altro ritocco (magari ci sono due statement sulla stesas riga, non so; comunque l'editor te lo segnala e li sistemi facilmente).

Nota2: se fallisce la INSERT pubblica il risulatato di Log(query); è lì che si vede cosa viene passato al PHP

Nota3: se commentando la query derivata dai campi ne inserisci una di prova con valori di test e neanche quella funziona, allora hai un problema nel PHP
 

sirjo66

Well-Known Member
Licensed User
Longtime User
B4X:
ExecuteRemoteQuery("INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('" & EditText7.text & "','" & EditText8.text & "', '" & scassaobanca & "', '" & entrata & "','" & Spinner3.GetItem & "', " & EditText9.text & "), "inserisci")

Hai ancora problemi con gli apici e le vergolette :), non ti sei accorto che alla fine, dove hai
EditText9.text & "), "inserisci")
in realtà hai saltato una virgoletta, e deve essere
EditText9.text & ")", "inserisci")

Sergio
 

Nikeddy

Active Member
Licensed User
Longtime User
allora,...

questa query:
B4X:
ExecuteRemoteQuery("INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('" & EditText7.text & "','" & EditText8.text & "', '" & scassaobanca & "', '" & entrata & "','" & Spinner3.GetItem & "', " & EditText9.text & ")", "inserisci")
da questo errore:

B4A version: 6.50
Parsing code. (0.01s)
Compiling code. Error
Error compiling program.
Error description: Too many parameters.
Occurred on line: 197
ExecuteRemoteQuery("INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('" & EditText7.text & "','" & EditText8.text & "', '" & scassaobanca & "', '" & entrata & "','" & Spinner3.GetItem & "', " & EditText9.text & ")", "inserisci")
Word: inserisci



sopra invece c'e' la query da test:

B4X:
'query di test
'query=$"INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('2017-03-21','una descrizione','cassa','entrata','Utenze','123.45');"$
log:
B4X:
INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('2017-03-21','una descrizione','cassa','entrata','Utenze','123.45');

che funziona!
 

Nikeddy

Active Member
Licensed User
Longtime User
corretta!!!

B4X:
Sub Fetchinserimento
Dim query As String
If RadioButton1.Checked = True Then
scassaobanca = "cassa"
Else
scassaobanca ="banca"
End If
entrata = "entrata"
'query di test
'query=$"INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('2017-03-21','una descrizione','cassa','entrata','Utenze','123.45');"$
'query da form
ExecuteRemoteQuery("INSERT INTO librocontabile (data,descrizione,cassabanca,entratauscita,categoria,euro) VALUES ('" & EditText7.text & "','" & EditText8.text & "','" & scassaobanca & "','" & entrata & "','" & Spinner3.SelectedItem & "','" & EditText9.text & "')", "inserisci")
'Log(ExecuteRemoteQuery)
ExecuteRemoteQuery(query,"inserisci")
End Sub


la data devo risolvere il data picker.....e poi inserire un messaggio se inserito correttamente, e pulire i campi.
 
  • Like
Reactions: udg

udg

Expert
Licensed User
Longtime User
Post#37
Assicurati che EditText7.text riporti la data nel formato atteso dal DB (es. MySql vuole yyyy-MM-dd)

Visto che ora funziona, approfitta per fare un po' di pulizia. Ad esempio nel JobDone hai praticamente lo stesso codice per "entrate" ed "uscite"; crea una sub comune ai due casi e chiama la sub passando un parametro che indichi in quale dei due ti trovi. In questo modo fai manutenzione su un unico blocco di codice invece che due "gemelli".

Non mi è chiaro il motivo per cui hai dichiarato due variabili stringa (entrate e uscite) per contenere le rispettive costanti che potevano essere inviate direttamente as ExecuteRemoteQuery come fai ora per "inserisci". Personalmente, se non servono ad altro, le eliminerei.

"If RadioButton1.Checked = True Then.." lo puoi abbreviare in
If RadioButton1.Checked Then scassaobanca = "cassa" Else scassaobanca ="banca"

E naturalmente assegna dei nomi significativi agli elementi del form che poi usi nel codice altrimenti tra qualche tempo rischi di non capire più chi fa cosa.

udg
 

Nikeddy

Active Member
Licensed User
Longtime User
grande, provvedo e aggiorno con codice pulito!

una cosa, come metto un messaggio al completamento dell'insert? msg...?!
 

udg

Expert
Licensed User
Longtime User
come metto un messaggio al completamento dell'insert?

In JobDone, modifica il caso di "inserisci" aggiungendo un msg ; ad esempio:
B4X:
Case "inserisci"
    ToastMessageShow("Inserimento dati effettuato correttamente.", True)
End Select
 

Star-Dust

Expert
Licensed User
Longtime User
UDG hai avuto tanta pazienza e gli hai fatto praticamente il codice, ma una percentuale per te ci esce?
 

udg

Expert
Licensed User
Longtime User
ma una percentuale per te ci esce?
eheh, non credo. A giudicare dal contenuto di Spinner1 mi sa che il sw è per una qualche associazione senza fini di lucro..

Un mio vecchio (non anziano, proprio vecchio) professore era solito raccontare di un suo allievo che una volta gli chiese " professore come potrò mai sdebitarmi con lei?" e lui rispose "non puoi; magari in futuro farai tu per altri ciò che io ho fatto ora per te".
 

Star-Dust

Expert
Licensed User
Longtime User
Il mio vecchio (e anziano) professore di informatica, si faceva realizzare i software che gli commissionavano, dagli alunni promettendo una percentuale e poi diceva che non lo pagavano. Mi sa che era più furbo il mio professore.

Una volta ci ha fatto comprare il Visual C++ suddividendo il costo fra gli alunni (e ovviamente non partecipando alla spesa) poi si è tenuto l'originale e a noi ha dato delle copie del CD e le fotocopie del manuale (malfatte tra l'altro).
Le fotocopie ovviamente ce le siamo pagate extra:cool::confused:
 
Last edited:

udg

Expert
Licensed User
Longtime User
Non credo che professore sia il titolo corretto per un figuro del genere
ps: ogni copia pirata comportava 6 mesi di condanna penale, se non erro..
 

Star-Dust

Expert
Licensed User
Longtime User
Non saprei non conosco il codice civile o penale nel caso, cmq risale a più di 20 anni fà credo sia in prescrizione e immagino che lui al momento stia truffando i vecchietti del suo condominio
 
Top