Italian Esempi Gestione su DB

Federico1968

Member
Licensed User
Longtime User
Ciao,
Mi trovo in difficoltà sulla gestione di un DB
La tabella è la seguente.

Riesco a aprire il DB da B4A ed inserirlo in una serie di edittext

Sub riempicelle
dbcursor = dbSQL.ExecQuery ("SELECT * FROM Persona")
Inserimentoscheda0.Text = dbcursor.GetString ("Nome")
Inserimentoscheda1.Text = dbcursor.GetString ("Cognome")
Inserimentoscheda2.Text = dbcursor.GetString ("Luogo")
Inserimentoscheda3.Text = dbcursor.GetString ("Data")
Inserimentoscheda4.Text = dbcursor.GetString ("Indirizzo")
Inserimentoscheda5.Text = dbcursor.GetString ("Numero")
Inserimentoscheda6.Text = dbcursor.GetString ("Citta")
Inserimentoscheda7.Text = dbcursor.GetString ("Provincia")
Inserimentoscheda8.Text = dbcursor.GetString ("Cap")
Inserimentoscheda9.Text = dbcursor.GetString ("Stato")
Inserimentoscheda10.Text = dbcursor.GetString ("CF")
Sesso = dbcursor.GetString ("Sesso")
If Sesso = "M" Then
rb1.Checked = True
rb2.Checked = False
End If
If Sesso = "F" Then
rb1.Checked = False
rb2.Checked = True
End If
End Sub

Queste editext fanno parte di una scheda interfaccia utente.

Vorrei ora cancellare una determinata scheda (conosco il numero dbcursor.Position = x

Sub elimina_click
x = dbcursor.Position
dbSQL.ExecNonQuery("DELETE FROM Persona WHERE rowid = x")
End Sub

Ma non riesco a farla funzionare :BangHead:

Inoltre vorrei poter modificare una scheda visualizzata con il metodo UPDATE.

Ho provato a consultare diversi tutorial, ma sono davvero ostici e l'inglese certo non aiuta.

Qualcuno mi può aiutare
Grazie mille
 

Attachments

  • Immaginetabella.png
    Immaginetabella.png
    8.7 KB · Views: 252

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Fede
IO metto sempre nella struttura del DB un campo ID e utilizzo quello se devo fare delle cancellazione.
NOn ho mai cancellato utilizzando la rowid
comunque scritto cosi non può' funzionarti. Hai messo la variabile x dentro gli appici prova con
dbSQL.ExecNonQuery("DELETE FROM Persona WHERE rowid = " & X)

Per le modifihe puoi fare cosi. Es. il Cognome deve diventare Pizzato ed il Nome Massimo
txt_sql="update Persona Set Cognome = 'Pizzato' "
txt_sql=txt_sql & " , Nome = 'Massimo' "
txt_sql=txt_sql & " where rowid = " & X
dbsql.execnoquery(txt_sql)
Ciaooooooooooo
Mamo
 

Federico1968

Member
Licensed User
Longtime User
Grazie tanto.
COn il vostro aiuto ho risolto questi due passaggi.
In effetti l'errore era il posizionamento della variabile x all'interno delle apici

Posto il codice per evetuale aiuto agli altri
A presto
Ciaooooo

Sub modifica_click
Dim txt_sql As String
Dim x As Int
x = dbcursor.Position
ToastMessageShow (x, False)
txt_sql="UPDATE Persona SET Cognome = 'Pizzato'"
txt_sql=txt_sql & " , Nome = 'Massimo' "
txt_sql=txt_sql & " WHERE rowid = " & x
dbSQL.ExecNonQuery(txt_sql)
End Sub

Sub elimina_click
dbSQL.ExecNonQuery("DELETE FROM Persona WHERE rowid = " & x)
End Sub
 

arenaluigi

Well-Known Member
Licensed User
Longtime User
Ciao,
La tua soluzione va bene finchè rowid è uguale alla position del cursor, ma potrebbero non coincidere e rischietesti di eliminare record sbagliati.
Prova ad eliminare alcuni record e poi fai delle prove.

Inviato dal mio GT-I9300 con Tapatalk 2
 

luciano deri

Active Member
Licensed User
Longtime User
Salve, è previsto il comando TRY abbinato alla ExecNonQuery? Mi serve per l'INSERT che nel caso esistesse già dovrei fare un UPDATE. Io per adesso faccio prima una select e in base all'esito scelgo però forse che un metodo più rapido?
 
Top