Autore Topic: Filtro in datasource?  (Letto 1951 volte)

Offline giuseppe249

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
    • http://www.gambas-it.org
Filtro in datasource?
« il: 04 Gennaio 2009, 13:06:01 »
Ho a disposizione questo codice che mi fa un filtro e mi visualizza il risultato
in delle listbox come l'esempio "prova1"


comando = "SELECT * FROM pippo WHERE " & ComboBox1.Text & " LIKE '%" & textbox5.Text & "%'"
hdata = $hconn.Exec(comando)
IF hdata.Available = TRUE THEN
form1.load
form1.show
Form1.ListBox1.Clear
Form1.ListBox2.Clear
Form1.ListBox3.Clear
Form1.ListBox4.Clear
Form1.ListBox5.Clear
 FOR EACH hdata  
Form1.ListBox1.Add(hdata!id)
Form1.ListBox2.Add(hdata!pippo1)
Form1.ListBox3.add(hdata!pippo2)
Form1.ListBox4.Add(hdata!pippo3)
Form1.ListBox5.Add(hdata!pippo4)

Ora vorrei sapere come applicare questo tipo di filtro ad un datasource in modo che tutti gli oggetti collegati ad esso tipo il databrowser mi visualizzano solo i dati usciti dal filtro..
 questo comando non mi funziona...form1.DataSource1.Filter = "hdata"
mi date una mano?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Filtro in datasource?
« Risposta #1 il: 04 Gennaio 2009, 17:44:19 »
Citazione

giuseppe249 ha scritto:

 questo comando non mi funziona...form1.DataSource1.Filter = "hdata"
mi date una mano?


Togli le virgolette a hdata....il codice dovrebbe essere:

Codice: [Seleziona]
form1.DataSource1.Filter = hdata


Fammi sapere se va...

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Filtro in datasource?
« Risposta #2 il: 04 Gennaio 2009, 18:17:32 »
purtroppo i datasource e databrowser li ho usati pochissimo (nel file prova1 avevo iniziato a studiarla)

ti consiglio di utilizzare una gridwiev anche se meno semplida da usare per visualizzare i dati ti risolve parecchi problemi per selezionare dei record o per visualizzare dati filtrati

guarda in area download nella sezione guide e tutoria ho postato una piccola guida (longi da essere completa) in cui utilizzo una gridwiew per visualizzare dei dati filtrati tramite query
allegato alla guida c'è anche un file di esempio

piccola guida sqlite3

Offline giuseppe249

  • Gamberetto
  • *
  • Post: 14
    • Mostra profilo
    • http://www.gambas-it.org
Re: Filtro in datasource?
« Risposta #3 il: 04 Gennaio 2009, 21:37:12 »
Ceskho ho provato senza virgolette ma il risultato è lo stesso: "type mismatch: wanted string, got result instead"

Ho risolto in parte grazie all'esempio di Fsurfing che mi da il risultato del filtro visualizzato nelle gridview, anche se il mio scopo era un pò diverso.

n.b.: una domanda per Fsurfing: Ho notato nel tuo progetto di esempio, che facendo una ricerca dalla textbox mi visualizza i dati filtrati nella gridview, fin qua tutto ok, ma come fa poi che quando cancelli tutto il testo, ritornano di nuovo tutti i dati della tabella? (Magia?  :incredibile:)
Ti dico questo perchè in visual basic dovevo rifare di nuovo una query su ID e impostare "id=>0" facendo in modo che mi visualizzava di nuovo tutta la tabella completa(come l'esempio riportato sotto).

Comunque giusto per rendervi le idee chiare Vi riporto l'esempio di codice che utilizzavo in visual basic che sto provando a riconvertire con gambas e non ci sono ancora riuscito... :muro:

Codice: [Seleziona]
Private Sub Command2_Click() 
On Error Resume Next
Dim var5 As String
Dim filtro2 As String
var5 = txtPassword.Text
If var5 = "" Then  MsgBox "Non è stata inserita Nessuna Descrizione", vbCritical, "ATTENZIONE"
txtPassword.SetFocus
Else  
filtro2 = "descrizione like " & "'" & var5 & "*" & "'" & ""
DataEnvironment1.rsMagazzino.Filter = filtro2  
If DataEnvironment1.rsMagazzino.EOF Then  MsgBox "Non esiste nessun Articolo in Magazzino con la descrizione specificata.", vbCritical, "ATTENZIONE"
 DataEnvironment1.rsMagazzino.Filter = "Id >= '0'"
Unload frmricerca
Else
MsgBox "Questi sono gli Articoli secondo la Descrizione specificata, premere Invio per visualizzare tutti gli Articoli in Magazzino.", vbCritical, "ATTENZIONE"  
Unload frmricerca
frmmovimenti.DataGrid1.ForeColor = &HC0&  
End If
End If
End Sub

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Filtro in datasource?
« Risposta #4 il: 05 Gennaio 2009, 10:31:29 »
Citazione
poi che quando cancelli tutto il testo, ritornano di nuovo tutti i dati della tabella? (Magia? ) [/quote

non è magia  :-(

semplicemente cancellando tutto il testo viene mandata in elaborazione una query  che ha come metodo di ricerca   LIKE '%"  & "%'

ovvero visualizza tutti i dati



secondo me ti conviene riscrivere il codice della tua applicazione da 0 senza tentare una traduzione da vb a gambas del resto pur essendo due linguaggi simili vi sono parecchie differenze sul modo operare per giungere allo stesso risultato

Offline naderit

  • Grande Gambero
  • ***
  • Post: 140
    • Mostra profilo
Re: Filtro in datasource?
« Risposta #5 il: 21 Dicembre 2014, 18:05:18 »
ciao leggo solo ora la discussione, anche se molto in ritardo, magari a qualcuno può interessare,
Codice: [Seleziona]

Dim valore As String

  valore = InputBox("AAAAAA", "BBBBBBB") 'inserimento dato
 
  FrmSoci.DataSoci.Filter = DB.Subst("pippo LIKE &1", valore)