Gambas-it

Gambas3 => Programmazione => Topic aperto da: dregi - 03 Settembre 2019, 17:42:09

Titolo: update PostgreSQL
Inserito da: dregi - 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?
Titolo: Re:update PostgreSQL
Inserito da: Gianluigi - 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  :)
Titolo: Re:update PostgreSQL
Inserito da: dregi - 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
Titolo: Re:update PostgreSQL
Inserito da: Gianluigi - 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:
Titolo: Re:update PostgreSQL
Inserito da: dregi - 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?

Titolo: Re:update PostgreSQL
Inserito da: Gianluigi - 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.