Autore Topic: update PostgreSQL  (Letto 792 volte)

Offline dregi

  • Gambero
  • **
  • Post: 85
  • Non possum tuis usque tandem abutere patientiae?
    • Mostra profilo
update PostgreSQL
« il: 03 Settembre 2019, 17:42:09 »
Codice: [Seleziona]
Public Sub Modifica()
 $Con.Close
 Try $Con.Open()               ' Open the connection
If Error Then
  $Con = Null
  Message.Error("Errore durante la connessione")
Else
  $Con.Exec("UPDATE clienti SET COGNOME=" & TextBox5.Text & ",NOME=" & TextBox6.Text & ",VIA=" & TextBox7.Text & ",CITTA=" & TextBox8.Text & " WHERE id=" & nid)
  LeggiDatabase
Endif
End
Questa sub non funziona, non succede nulla. Vedete qualcosa che non va?

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:update PostgreSQL
« Risposta #1 il: 03 Settembre 2019, 18:22:58 »
Si alcuni errori li vedo le stringhe vanno avvolte negli apici (') Postgres non vuole le maiuscole nei nomi di campo, le iterrogazioni devono finire con il punto e virgola ';', ti aiuterebbe molto scrivere così:

Codice: [Seleziona]
  Dim sMySql As String

  sMySql = "UPDATE clienti"
  sMySql &= " SET cognome='" & TextBox5.Text & "',"
  sMySql &= " nome='" & TextBox6.Text & "',"
  sMySql &= " via='" & TextBox7.Text & "',"
  sMySql &= " citta='" & TextBox8.Text & "'"
  sMySql &= " WHERE id=" & nid
  sMySql &= ";"
 
  $Con.Exec(sMySql)

Meglio se usi il "sistema" Gambas vedi il mio codice in ReportTest nella Farm come creo e riempo la tabella.

Se parti in quarta senza sapere come si usa Gambas farai solo paciughi  :)
« Ultima modifica: 03 Settembre 2019, 18:26:02 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dregi

  • Gambero
  • **
  • Post: 85
  • Non possum tuis usque tandem abutere patientiae?
    • Mostra profilo
Re:update PostgreSQL
« Risposta #2 il: 03 Settembre 2019, 19:54:11 »
Ti ringrazio per i suggerimenti, sopratutto per quelli legati alla costruzione della stringa della query SQL quell'ordine certamenente mi akiuterà ad evitare qualche errore di sintassi.. Ho provveduto pure al lowercase dei campi.
Ma la query non funziona ancora.
Codice: [Seleziona]
Public Sub Modifica()
Dim sMySql As String

  sMySql = "UPDATE clienti"
  sMySql &= " SET cognome='" & TextBox5.Text & "',"
  sMySql &= " nome='" & TextBox6.Text & "',"
  sMySql &= " via='" & TextBox7.Text & "',"
  sMySql &= " citta='" & TextBox8.Text & "'"
  sMySql &= " WHERE id=" & nid
  sMySql &= ";"

 $Con.Close
 Try $Con.Open()               ' Open the connection
If Error Then
  $Con = Null
  Message.Error("Errore durante la connessione")
Else
  $Con.Exec(sMySql)
  LeggiDatabase
Endif
End

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:update PostgreSQL
« Risposta #3 il: 03 Settembre 2019, 20:09:26 »
Scusa ma $Con da solo non apre una connessione chiusa.  :-\
Poi Postgres non è access o sqlite che apri e chiudi la connessione ogni volta, la apri e la lasci aperta, la chiudi solo quando smetti di lavorare.

Comunque ti volevo suggerire procedure più gambassiane tipo:

Codice: [Seleziona]
Public Sub Modifica()

  Dim hResult As Result
  Dim sCriteria As String
  Dim iParameter As Integer
 
  sCriteria = "id = &1"
  iParameter = nid
 
 '' qui il database è già aperto con una procedura del tipo OpenDB()


    $Con.Begin
    ' lo stesso di "SELECT * FROM nome-tabella WHERE id = x"
    hResult = $hConn.Edit("clienti", sCriteria, iParameter)
    ' Imposta i valori dei campi
    hResult!cognome = TextBox5.Text
    hResult!nome = TextBox6.Text
    hResult!via = TextBox7.Text
    hResult!citta = TextBox8.Text
    ' Aggiorna i valori
    hResult.Update
    $hConn.Commit
   
    LeggiDatabase
   
Catch
  $Con.Rollback
  Message.Error(Error.Text)

End

 :ciao:
« Ultima modifica: 03 Settembre 2019, 20:13:11 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline dregi

  • Gambero
  • **
  • Post: 85
  • Non possum tuis usque tandem abutere patientiae?
    • Mostra profilo
Re:update PostgreSQL
« Risposta #4 il: 03 Settembre 2019, 20:25:46 »
Aprirla, operare con hResult e chiuderla uscendo dal form è quello che cerco. :)
L'unica riga che mi risulta poco chiara è questa:

Codice: [Seleziona]
sCriteria = "id = &1"

Gianluigi, hai una guida da suggerirmi, parlo di un testo, oppure anche in formato digitale per Gambas?

« Ultima modifica: 03 Settembre 2019, 21:20:39 da dregi »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:update PostgreSQL
« Risposta #5 il: 03 Settembre 2019, 23:08:03 »
Aprirla, operare con hResult e chiuderla uscendo dal form è quello che cerco. :)
Scusa ma lo hai letto il topic precedente mio su Postgres?
Citazione
L'unica riga che mi risulta poco chiara è questa:

Codice: [Seleziona]
sCriteria = "id = &1"
Funziona come Subst:
http://gambaswiki.org/wiki/lang/subst?l=it
Citazione

Gianluigi, hai una guida da suggerirmi, parlo di un testo, oppure anche in formato digitale per Gambas?

Da qui puoi scaricare la guida (molto vecchia) Gambas-beginners-guide in guide e tutorial quasi in fondo alla pagina.
https://www.gambas-it.org/wp/downloads/
Comunque è tutto obsoleto

Leggiti la documentazione di Gambas, la sto traducendo (piano  :sleepy: ), quella in inglese è molto più aggiornata.

Qui un elenco di aiuti stilato da vuott:
https://www.gambas-it.org/smf/index.php?topic=5945.msg42350#msg42350

Però la cosa più utile, almeno per me, è studiare il codice dei maestri, ad esempio la IDE e molti componenti sono scritti in Gambas e quello è codice di Minisini in persona.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro