Autore Topic: Possibile malfunzionamento di Result.Available.  (Letto 2402 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Possibile malfunzionamento di Result.Available.
« il: 06 Settembre 2015, 21:18:12 »
Available dovrebbe restituire True se Result punta ad un database esistente, ma secondo questo test che allego non sembrerebbe così. Funziona solo con SELECT.
Sbaglio io o cosa?

Gambas 3.7.1 su Ubuntu 14.04 LTS

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #1 il: 07 Settembre 2015, 18:23:39 »
Available dovrebbe restituire True se Result punta ad un database esistente, ma secondo questo test che allego non sembrerebbe così. Funziona solo con SELECT.
Sbaglio io o cosa?

Gambas 3.7.1 su Ubuntu 14.04 LTS

 :ciao:

L'istruzione Result.Available riporta TRUE solo se la query eseguita sul db ritrova almeno un record. In caso contrario ritorna FALSE, se il db non esiste otterrai un errore di connessione.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #2 il: 07 Settembre 2015, 18:39:12 »
L'istruzione Result.Available riporta TRUE solo se la query eseguita sul db ritrova almeno un record. In caso contrario ritorna FALSE, se il db non esiste otterrai un errore di connessione.

Intendi dire che quando aggiorna, rimuove, aggiunge non deve comunicare niente? Però la spiegazione nella documentazione a me pare fuorviante... anche se pensandoci meglio avrebbe poco senso restituire true senza poi ritornare valori.
Io ho sempre usato Try e/o letto se Null non avevo mai usato Available mmmh
Grazie per a spiegazione  :2birre:


nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #3 il: 07 Settembre 2015, 22:11:35 »
Come specificato nella documentazione Result è il risultato di una query. Non comunica niente a nessuno.
Ammesso che tu abbia nella tabella clienti 10 record di cui 3 vivono a Milano (scusate la citazione) le istruzioni

oResult = SELECT * FROM CLIENTI ritorna un Result contenente tutti i 10 record

oResult = SELECT * FROM CLIENTI WHERE CITTA='MILANO' ritorna solo i tre record dei clienti residenti a milano.

A te il compito di aggiornare, aggiungere o rimuovere i record.
Probabilmente quello che ti crea confusione sono i metodi di gambas, dove il Result viene usato per le transazioni.
L'istruzione:
oResult = Connection.Tables.Add("clienti") altro non è che una traduzione per l'istruzione Connection.Exec("CREATE TABLE clienti")

In realtà sotto c'è un lavoro non indifferente del componente gb.db che puoi vedere nell'esempio che ti allego, eseguilo e osserva quello che viene scritto in consolle dell'IDE, in particolare le ultime due righe.

Spero di essere stato chiaro. ciao


L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #4 il: 07 Settembre 2015, 22:42:17 »
Intanto grazie delle spiegazioni e del codice che fra poco mi studierò.
Però se dai un occhio al mio codice vedi che non uso result in modo “Gambas” ma solo per eseguire comandi SQL tipo questo:
Codice: [Seleziona]
Public Sub btUpdate_Click()
  Dim sMioSql As String
  Dim hRisultato As Result 
  Dim sNome, sCognome, sCitta As String 
 
  AggiornaID
  sNome = "No-Update_" & $iID
  sCognome = "Co-Update_" & $iID
  sCitta = "Ci-Update_" & $iID   
 
  sMioSql = "UPDATE Clienti"
  sMioSql &= " SET Cli_Nome = \"" & sNome & "\","
  sMioSql &= " Cli_Cognome = \"" & sCognome & "\","
  sMioSql &= " Cli_Citta = \"" & sCitta & "\"" 
  sMioSql &= " WHERE ID_Cli = " & $iID
  sMioSql &= ";" 
  With Mdati       
    .AproDB   
    .$Conn.Begin
    hRisultato = .$Conn.Exec(sMioSql)       
    If hRisultato.Available Then
      Print "AVAILABLE RESULT UPDATE"
    Endif
    .$Conn.Commit
    Wait
    .ChiudoDB           
  End With
 
End
E la mia incomprensione su result.available nasce proprio da questo, penso.
Mi aspettavo che funzionasse tipo “Ho eseguito la query” = True e non “Sono disponibili i dati richiesti” = True

Fra poco vado a studiare, grazie ancora.
 :ciao:
Ps: Tu si che saresti un validissimo moderatore insieme a vuott :ok:
Lo so il tempo, è sempre una questione di tempo
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #5 il: 08 Settembre 2015, 16:03:21 »
@sotema,
il progettino DBMethods è un vero concentrato di conoscenza  :ok: consiglio a tutti di scaricarlo e lanciarlo.
 :ciao:

PS:
Se qualcuno fosse interessato a dare un'occhiata anche al mio lo avverto che c'è un errore nella routine AggionaID della Fmain riga 30
Codice: [Seleziona]
$iID = "1" va cambiato in  $iID = "0"
.
Esemplificando per il post ho ridotto all'osso un progettino di esempio che sto tirando giù per il libro, ma questo errore me l'ero perso.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #6 il: 09 Settembre 2015, 18:27:22 »
@sotema,
il progettino DBMethods è un vero concentrato di conoscenza  :ok: consiglio a tutti di scaricarlo e lanciarlo.
 :ciao:

Esagerato.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Re:Possibile malfunzionamento di Result.Available.
« Risposta #7 il: 09 Settembre 2015, 18:33:57 »
@sotema,
il progettino DBMethods è un vero concentrato di conoscenza  :ok: consiglio a tutti di scaricarlo e lanciarlo.
 :ciao:

Esagerato.

Se ti sembra esagerato... aggiungici qualcosa  ;D

Scherzi a parte in poche righe spiega tanto  :ok:
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro