Autore Topic: [RISOLTO] Spostarsi tra i record  (Letto 341 volte)

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
[RISOLTO] Spostarsi tra i record
« il: 13 Gennaio 2017, 14:12:50 »
Dunque
1) ho creato una maschera con delle textbox che mi mostrano i campi dei record del mio database.
2) ho inserito una textbox per filtrare i record
3) ho scritto questo codice che funziona alla grande
Codice: [Seleziona]
Public Sub TextBoxFiltra_Change()

Dim vConnessione As New Connection
Dim vRisultato As Result

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()
  vRisultato = vConnessione.Exec("SELECT * FROM Clienti WHERE Cliente LIKE '%" & TextBoxFiltra.Text & "%'")
  If vRisultato.Available Then
  TextBoxId.Text = vRisultato!id_Clienti
  TextBox1.Text = vRisultato!Cliente
  TextBox2.Text = vRisultato!Ragione_Sociale
  Else
  vRisultato = vConnessione.Exec("SELECT * FROM Clienti WHERE Ragione_Sociale LIKE '%" & TextBoxFiltra.Text & "%'")
  If vRisultato.Available Then
  TextBoxId.Text = vRisultato!id_Clienti
  TextBox1.Text = vRisultato!Cliente
  TextBox2.Text = vRisultato!Ragione_Sociale
  End If
  End If

sql = vRisultato
vConnessione.Close()

End
4) ho una Public sql As Result alla quale, prima di chiudere la connessione assegno il risultato del filtro sql=vRisultato
Parte non funzionante:
5) ho inserito i pulsanti di spostamento ai quali al click ho assegnato sql.MoveFirst e sql.MoveLast

 :hard: i record non cambiano... sono fuori strada ?
« Ultima modifica: 15 Gennaio 2017, 02:18:39 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline Arco

  • Gambero
  • **
  • Post: 93
    • Mostra profilo
Re:Spostarsi tra i record
« Risposta #1 il: 13 Gennaio 2017, 16:11:15 »
Premetto che non ho fatto ancora esperienza con i database in gambas.
Mi sembra che l'istruzione:
sql=vConnessione
sia errata. Secondo me devi scorrere per vedere i vari record la:
sql=vRisultato
Questo penso sia l'istruzione corretta.
Spero di non aver scritto una cavolata.

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Spostarsi tra i record
« Risposta #2 il: 13 Gennaio 2017, 16:32:55 »
Premetto che non ho fatto ancora esperienza con i database in gambas.
Mi sembra che l'istruzione:
sql=vConnessione
sia errata. Secondo me devi scorrere per vedere i vari record la:
sql=vRisultato
Questo penso sia l'istruzione corretta.
Spero di non aver scritto una cavolata.

Grazie Arco, sì, nel mio DB ho scritto sql=vRisultato ma non funziona, ho sbagliato di scrivere nel primo post, lo correggo....
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Spostarsi tra i record
« Risposta #3 il: 14 Gennaio 2017, 19:30:13 »
Almeno, conoscete qualche link dove studiare come gestire i DB con Gambas
Il capitolo 15 della gambas-beginner-guide spiega poche cose
Ho anche installato i programmi d'esempio ma sono utili solo per alcune cose
Se cerco GB.DB non trovo niente
Ho provato ad effettuare mille altre ricerche in mille modi  :'(


Sono "preso" da "Gambas", mi diverto, ma datemi materiale da studiare e io cerco di non rompere con le mie domande  :ok:
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Spostarsi tra i record
« Risposta #4 il: 15 Gennaio 2017, 00:04:47 »
... datemi materiale da studiare ...
Torno ad indicare le attuali risorse nel web relative a Gambas.

1) la WIKI ufficiale di Gambas:
 - http://gambaswiki.org/wiki

2) la Mailing List ufficiale di Gambas ove porre domande:
 - https://lists.sourceforge.net/lists/listinfo/gambas-user

3) l'elenco dei messaggi posti nella Mailing List ufficiale:
 - http://gambas.8142.n7.nabble.com/

4) i forum dei programmatori Gambas nel mondo:
 - http://www.gambas-it.org/smf/
 - https://www.gambas-es.org/forum.php
 - http://www.gambasforge.org/
 - http://www.gambas-club.de/

5) le WIKI dei predetti forum:
 - http://www.gambas-it.org/wiki/index.php?title=Pagina_principale
 - http://wiki.gambas-es.org/doku.php
 - http://www.gambasforge.org/wiki
 - https://de.wikibooks.org/wiki/Gambas
 - http://gambas-buch.de/dw/doku.php

6) altri siti su Gambas:
 - http://www.gambaslinux.fr/
 - http://sologambas.blogspot.it/p/indice.html

7) testi scritti su Gambas:
 - http://gambaswiki.org/wiki/doc/book?nh&l=en
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Spostarsi tra i record
« Risposta #5 il: 15 Gennaio 2017, 02:04:45 »
Citazione
Torno ad indicare le attuali risorse nel web relative a Gambas.

vuott ti ringrazio per il tuo lavoro certosino, ma i tuoi link (che adesso mi salvo  ;D ) li trovavo anche io, la mia domanda però era più specifica

Citazione
Almeno, conoscete qualche link dove studiare come gestire i DB con Gambas

perche (ed ho provato) se googlo nello specifico trovo ben poco, esempio (gambas muoversi tra i record) (gambas rilevare ultimo record) etc. etc.

comunque sono uno che non molla e anche se sono le 2 di notte almeno questo post l'ho risolto.

a seguire, la mia soluzione che fino a prova contraria o soluzione migliore può tornare utile ad altri  ;)
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Spostarsi tra i record
« Risposta #6 il: 15 Gennaio 2017, 02:17:11 »
La mia soluzione funzionante:

NOTE: post modificato il 15 gennaio 2017 con codice perfezionato per tutti gli spostamenti
NOTE: post modificato il 18 gennaio 2017 con codice ulteriormente perfezionato e ridotto nel numero di righe

Variabili pubbliche:
Codice: [Seleziona]
Public vConnessione As New Connection
Public vRisultato As Result
Public vRecord As Integer

Apertura del form:
Codice: [Seleziona]
Public Sub Form_Open()

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()
  vRisultato = vConnessione.Exec("Select * From 'Clienti'")
If vRisultato.Available = True Then
  TextBoxId.Text = vRisultato!id_Clienti
  TextBox1.Text = vRisultato!Cliente
  TextBox2.Text = vRisultato!Ragione_Sociale
End If

vConnessione.Close()

End

Filtro:
Codice: [Seleziona]
Public Sub TextBoxNomeFiltra_Change()

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()
  vRisultato = vConnessione.Exec("SELECT * FROM Clienti WHERE Cliente LIKE '%" & TextBoxNomeFiltra.Text & "%'")
  If vRisultato.Available = True Then
  TextBoxId.Text = vRisultato!id_Clienti
  TextBox1.Text = vRisultato!Cliente
  TextBox2.Text = vRisultato!Ragione_Sociale
  End If

vConnessione.Close()

End

Spostamento tra i record:

Primo record:
Codice: [Seleziona]
Public Sub ButtonPrimo_Click()

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()

        If vRisultato.Available Then
              vRisultato.MoveFirst
              Dec vRecord
                  If vRisultato.Available Then
                  TextBoxId.Text = vRisultato!id_Clienti
                  TextBox1.Text = vRisultato!Cliente
                  TextBox2.Text = vRisultato!Ragione_Sociale
                  Else
                  vRisultato.MoveFirst
                  vRecord = vRisultato!id_Clienti
                  Endif
        Endif

vConnessione.Close()

End

Record precedente:
Codice: [Seleziona]
Public Sub ButtonPrecedente_Click()

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()

        If vRisultato.Available Then
              vRisultato.MovePrevious
              Dec vRecord
                  If vRisultato.Available Then
                  TextBoxId.Text = vRisultato!id_Clienti
                  TextBox1.Text = vRisultato!Cliente
                  TextBox2.Text = vRisultato!Ragione_Sociale
                  Else
                  vRisultato.MoveFirst
                  vRecord = vRisultato!id_Clienti
                  Endif
        Endif

vConnessione.Close()
       
End

Record successivo:
Codice: [Seleziona]
Public Sub ButtonSuccessivo_Click()

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()

        If vRisultato.Available Then
              vRisultato.MoveNext
              Inc vRecord
                  If vRisultato.Available Then
                  TextBoxId.Text = vRisultato!id_Clienti
                  TextBox1.Text = vRisultato!Cliente
                  TextBox2.Text = vRisultato!Ragione_Sociale
                  Else
                  vRisultato.MoveLast
                  vRecord = vRisultato!id_Clienti
                  Endif
        Endif
       
vConnessione.Close()
       
End

Ultimo record:
Codice: [Seleziona]
Public Sub ButtonUltimo_Click()

With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()

        If vRisultato.Available Then
              vRisultato.MoveLast
              Inc vRecord
                  If vRisultato.Available Then
                  TextBoxId.Text = vRisultato!id_Clienti
                  TextBox1.Text = vRisultato!Cliente
                  TextBox2.Text = vRisultato!Ragione_Sociale
                  Else
                  vRisultato.MoveLast
                  vRecord = vRisultato!id_Clienti
                  Endif
        Endif
       
vConnessione.Close()

End

« Ultima modifica: 18 Gennaio 2017, 19:00:37 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.