Gambas-it

Gambas3 => Programmazione => Topic aperto da: ilfurlan - 10 Gennaio 2017, 10:35:14

Titolo: [RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 10 Gennaio 2017, 10:35:14
Codice: [Seleziona]
  Dim vConnessione As New Connection
  Dim vRisultato As Result
  Dim sql As String
 
With vConnessione
  .Type = "sqlite3"
  .Name = "Report_DB.sqlite"
  .Host = User.Home &/ "MyReport/"
  .Login = ""
  .Password = ""
End With

  vConnessione.Open()
  sql = "Select Nome From Intestazione WHERE Nome not null"                                                'imposto la query
  vRisultato = vConnessione.Exec(sql)                                                                                              'eseguo la query
  DataSource1.Filter = sql                                                                                                                     'restituisco il risultato al filtro (ma non funziona)
  vConnessione.Close()

Chi mi aiuta? dov'è l'errore?  :hard:
La connessione funziona...
La query funziona e viene eseguita...
Datasource1.Filter si blocca sulla stringa  :-\
Titolo: Re:Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 10 Gennaio 2017, 19:05:28
Ho trovato questo post
http://www.gambas-it.org/smf/index.php?topic=412.0
che alla fine per evitare problemi e semplificare il codice consiglia:
Codice: [Seleziona]
DataSource1.Filter = DB.Subst("pippo LIKE &1", valore)
ma non trovo spiegazioni su come inserire la query in DB.Subst...
qualcuno lo ha fatto? come?

Grazie
Titolo: Re:Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 10 Gennaio 2017, 21:07:15
Per fare un filtro si fa così, in modo semplice e con una sola riga di codice:

Codice: [Seleziona]
  DataSource1.Filter = DB.Subst("nomecolonna LIKE &1", "ricerca")

dove ricerca può essere:

del testo tra virgolette;
un dato inserito in una finestra popup, esempio: ricerca = InputBox("quiladomanda", "quititolofinestra");
il testo digitato in una TextBox.text;
etc...

per cercare in parte del campo, utilizzare il simbolo %
esempio: "%ricerca%" trova la parola ricerca senza considerare quello che è scritto prima e dopo

 :ciao:

Vabbè, il Gamberetto ha fatto tutto da solo... speriamo serva a qualcuno che come me adora i database...
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: allegfede - 11 Gennaio 2017, 14:02:39
scusa ma qui' c'e' un errore di battitura od e' voluto:
Citazione
.Host = User.Home &/ "MyReport/"

forse intendevi:
Codice: [Seleziona]
 .Host = User.Home & "/MyReport/"

la posizione della barra
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 11 Gennaio 2017, 14:08:25
scusa ma qui' c'e' un errore di battitura od e' voluto:
Citazione
.Host = User.Home &/ "MyReport/"

forse intendevi:
Codice: [Seleziona]
 .Host = User.Home & "/MyReport/"

la posizione della barra

Lo scrivo sempre così, fino ad ora ha sempre funzionato  :rolleyes: non dirmi che è sbagliato  :'(
lo avevo trovato scritto in un post che era consigliato scriverlo così.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 11 Gennaio 2017, 15:08:08


Lo scrivo sempre così, fino ad ora ha sempre funzionato  :rolleyes: non dirmi che è sbagliato  :'(
lo avevo trovato scritto in un post che era consigliato scriverlo così.

Si, tranquillo è giusto scritto come hai scritto tu, comunque funziona anche all'altro modo...  :ok:
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 11 Gennaio 2017, 15:10:48
Citazione
Si, tranquillo è giusto scritto come hai scritto tu, comunque funziona anche all'altro modo...  :ok:

Grazie Gianluigi  :ok:
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 11:30:15
Esatta dicitura per impostare un filtro in Datasource, con ricerca in parte del campo:

Codice: [Seleziona]
Public Sub TextBoxTrova_Change()

With vConnessione
.Type = "sqlite3"
.Host = User.Home &/ "CartellaDatabase/"
.Name = "NomeDatabase"
.Login = ""
.Password = ""
End With

  vConnessione.Open
  DataSource1.Filter = DB.Subst("NomeColonna LIKE &1", ("%" & TextBoxTrova.Text & "%")) 'applica il filtro mentre si digita nella TextBox
  DataSource1.MoveFirst  'si posiziona immediatamente sul primo record trovato
  vConnessione.Close

End


Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 17 Febbraio 2017, 12:29:46
Io veramente non so più come spiegartelo, forse dovresti proprio dimenticarti di Change, continui a usare questo evento a sproposito.
Fai così inserisci un:
Codice: [Seleziona]
Print "ACCIDENTI!"
Subito prima e subito dopo l'apertura e la chiusura della connessione e poi valuta tu.
Naturalmente sappi che questa è l'ultima volta che te lo dico.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 13:03:41
Io veramente non so più come spiegartelo, forse dovresti proprio dimenticarti di Change, continui a usare questo evento a sproposito.
Fai così inserisci un:
Codice: [Seleziona]
Print "ACCIDENTI!"
Subito prima e subito dopo l'apertura e la chiusura della connessione e poi valuta tu.
Naturalmente sappi che questa è l'ultima volta che te lo dico.

 :o ma perchè? funziona perfettamente!

ho ricominciato tutto da capo con i vostri insegnamenti... meglio LostFocus?
ok... uso LostFocus ma non ho capito perchè  8)
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 13:23:35
Io veramente non so più come spiegartelo, forse dovresti proprio dimenticarti di Change, continui a usare questo evento a sproposito.
Fai così inserisci un:
Codice: [Seleziona]
Print "ACCIDENTI!"
Subito prima e subito dopo l'apertura e la chiusura della connessione e poi valuta tu.
Naturalmente sappi che questa è l'ultima volta che te lo dico.

Ecco, ho fatto così (spero sia giusto, grazie per la pazienza)
Codice: [Seleziona]
Public Sub Form_Open()

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

vConnessione.Open()

End
e.....
Codice: [Seleziona]
Public Sub TextBoxTrova_LostFocus()

  DataSource1.Filter = DB.Subst("Descrizione LIKE &1", ("%" & TextBoxTrova.Text & "%"))
  DataSource1.MoveFirst

End
e.....
Codice: [Seleziona]
Public Sub Form_Close()

  vConnessione.Close()

End
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 17 Febbraio 2017, 13:32:22
A parte che c'è un refuso in quanto ti ho scritto intendevo "Subito prima o subito dopo" se lo scrivi dovresti capire che tutte le volte che digiti un carattere oppure cancelli un carattere o la parola, apri e chiudi la connessione e ripeti tutto il codice inutilmente.
Un pulsante è la migliore soluzione per avere un solo evento quello definitivo e utile.
Poi ripeto fai come credi il programma è tuo, solo evita di dire agli altri che quella è l'esatta dicitura.

In parole povere occorre sempre evitare di fare più volte quello che basta fare una volta sola.

Mentre ti rispondevo vedo che hai inserito un nuovo post e hai cambiato le carte, comunque se non è stato il medico che a causa di una rara malattia ti ha vietato di usare i pulsanti la regola migliore è quella di aprire, svolgere il compito e chiudere in un'unica passata attraverso l'evento Click del pulsante.

Se proprio devi usare lostfocus (io lo sconsiglio) apri e chiudi li la connessione.

Poi cerca di dividere i compiti in vari metodi che puoi facilmente richiamare da altre porzioni di codice esempio fai una sub che apre la connessione e poi la richiami dove ti serve.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 13:43:06
A parte che c'è un refuso in quanto ti ho scritto intendevo "Subito prima o subito dopo" se lo scrivi dovresti capire che tutte le volte che digiti un carattere oppure cancelli un carattere o la parola, apri e chiudi la connessione e ripeti tutto il codice inutilmente.
Un pulsante è la migliore soluzione per avere un solo evento quello definitivo e utile.
Poi ripeto fai come credi il programma è tuo, solo evita di dire agli altri che quella è l'esatta dicitura.

In parole povere occorre sempre evitare di fare più volte quello che basta fare una volta sola.

Mentre ti rispondevo vedo che hai inserito un nuovo post e hai cambiato le carte, comunque se non è stato il medico che a causa di una rara malattia ti ha vietato di usare i pulsanti la regola migliore è quella di aprire, svolgere il compito e chiudere in un'unica passata attraverso l'evento Click del pulsante.

Se proprio devi usare lostfocus (io lo sconsiglio) apri e chiudi li la connessione.

Poi cerca di dividere i compiti in vari metodi che puoi facilmente richiamare da altre porzioni di codice esempio fai una sub che apre la connessione e poi la richiami dove ti serve.


Ok, grazie.... adesso vedo come fare
è che voglio che mentre digiti ti appaia in tempo reale il filtro.

Mi spiego meglio,

Se scrivo And mi trova immediatamente tutto quello che contiene And (Andrea, Gianandrea, Andreina, etc.)

diversamente dovrei scrivere And e premere il pulsante per vedere se trova qualche cosa.... questo è il motivo per cui voglio evitare un pulsante  ;)
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 17 Febbraio 2017, 13:50:35
Vivaddio al tredicesimo post sappiamo finalmente cosa vai cercando.
E allora usa pure Change ma come detto evita di chiudere e riaprire durante l'evento, crei i metodi di apertura e chiusura li userai in entrata e uscita dalla text e durante il change usi il filtro.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 13:58:27
Vivaddio al tredicesimo post sappiamo finalmente cosa vai cercando.
E allora usa pure Change ma come detto evita di chiudere e riaprire durante l'evento, crei i metodi di apertura e chiusura li userai in entrata e uscita dalla text e durante il change usi il filtro.

Ha ha ha, dai che siete bravi, se non fosse per voi avrei abbandonato tutto, invece sono ancora qua che provo e riprovo (solo così si impara).
Comunque Gambas è proprio bello e ti prende, dopo un solo mese sto facendo cose che mai avrei immaginato... e quanto devo ancora imparare.
Intanto ti do una bella notizia, ho abbandonato la mia testardaggine e le mie contorsioni per seguire il tuo consiglio GB.DB  ;D
Guarda i primi miei post  :2birre: per capire da dove sono partito.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 17 Febbraio 2017, 14:10:07
Vivaddio al tredicesimo post sappiamo finalmente cosa vai cercando.
E allora usa pure Change ma come detto evita di chiudere e riaprire durante l'evento, crei i metodi di apertura e chiusura li userai in entrata e uscita dalla text e durante il change usi il filtro.

Ha ha ha, dai che siete bravi, se non fosse per voi avrei abbandonato tutto, invece sono ancora qua che provo e riprovo (solo così si impara).
Comunque Gambas è proprio bello e ti prende, dopo un solo mese sto facendo cose che mai avrei immaginato... e quanto devo ancora imparare.
Intanto ti do una bella notizia, ho abbandonato la mia testardaggine e le mie contorsioni per seguire il tuo consiglio GB.DB  ;D
Guarda i primi miei post  :2birre: per capire da dove sono partito.

E no carino, non sviare il discorso, ora posti il codice in base a quanto hai appena appreso e dimostri che prendi in considerazione i consigli che ti vengono dati.
Sappi che riceverai un voto  ;D
Forse...
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: kicco - 17 Febbraio 2017, 16:55:22
Citazione
Sappi che riceverai un voto  ;D
Forse...
E no! A me i voti non me li avete mai dati! ...  :P
 :ciao:
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 17:14:47
Citazione
Sappi che riceverai un voto  ;D
Forse...
E no! A me i voti non me li avete mai dati! ...  :P
 :ciao:

Vuoi mettere il mio Avatar, vale sei decimi solo quello  ;D
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 17 Febbraio 2017, 17:38:36
C'è da dire che visto il codice fin'ora postato anche tenendo conto dell'avatar comunque il voto si aggira intorno al quattro meno meno, e a proposito di avatar, d'accoro che deve avere la febbre molto alta, lo si deduce dal fatto che gli si accendono le lampadine in testa, ma una supposta di quelle dimensioni francamente non ti sembra esagerata?  :-\
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 17 Febbraio 2017, 17:40:11
C'è da dire che visto il codice fin'ora postato anche tenendo conto dell'avatar comunque il voto si aggira intorno al quattro meno meno, e a proposito di avatar, d'accoro che deve avere la febbre molto alta, lo si deduce dal fatto che gli si accendono le lampadine in testa, ma una supposta di quelle dimensioni francamente non ti sembra esagerata?  :-\

 :P non dico altro
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: vuott - 17 Febbraio 2017, 18:22:03
...... comunque il voto si aggira intorno al quattro meno meno, e a proposito di avatar, d'accoro che deve avere la febbre molto alta, lo si deduce dal fatto che gli si accendono le lampadine in testa, ma una supposta di quelle dimensioni francamente non ti sembra esagerata?

      (http://www.sharkbrew.com/community/uploads/ratings/smileyslaughing_lol_dielaughing_100_101.gif)
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 18 Febbraio 2017, 14:39:27
Visto che gli aiuti, diciamo così di indirizzo, sembrano non aver sortito effetto alcuno, aggiungo un codice dimostrativo di cosa intendevo suggerirti.
Siccome sono di manica larga ti lascerò quattro meno meno come voto, sappi che quando andavo a scuola io chi non consegnava il compito in classe sui beccava un due bello tondo e il giorno dopo doveva presentarsi accompagnato da un membro adulto della famiglia.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 18 Febbraio 2017, 15:46:31
Visto che gli aiuti, diciamo così di indirizzo, sembrano non aver sortito effetto alcuno, aggiungo un codice dimostrativo di cosa intendevo suggerirti.
Siccome sono di manica larga ti lascerò quattro meno meno come voto, sappi che quando andavo a scuola io chi non consegnava il compito in classe sui beccava un due bello tondo e il giorno dopo doveva presentarsi accompagnato da un membro adulto della famiglia.

Figata... moooolto interessante e insieme al tuo ProvaControlloImmissione2 ho materiale di studio e prove,
sempre moglie permettendo che mi ripete: ma sei sempre con i Gamberi? non ti stufi?  :2birre:

P.S.
Citazione
C'è da dire che visto il codice fin'ora postato anche tenendo conto dell'avatar comunque il voto si aggira intorno al quattro meno meno, e a proposito di avatar, d'accoro che deve avere la febbre molto alta, lo si deduce dal fatto che gli si accendono le lampadine in testa, ma una supposta di quelle dimensioni francamente non ti sembra esagerata?  :-\

Le lampadine in testa non sono per la febbre ma per le idee.
Non è una supposta ma una matita per prendere nota di tutte le volte che mi rimproveri  :ciao:
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 18 Febbraio 2017, 15:52:15
ProvaControlloImmissione2 ho materiale di studio e prove,

Non ricordo, a cosa ti riferisci?


Citazione
Le lampadine in testa non sono per la febbre ma per le idee.
Non è una supposta ma una matita per prendere nota di tutte le volte che mi rimproveri  :ciao:

 :)
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 18 Febbraio 2017, 15:59:36
ProvaControlloImmissione2 ho materiale di studio e prove,

Non ricordo, a cosa ti riferisci?


http://www.gambas-it.org/smf/index.php?topic=5456.0
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: Gianluigi - 18 Febbraio 2017, 18:09:43
Ah quello! E già, non mi ci far pensare è da li che ho iniziato a sprecare tempo nel tentativo di farti capire che è assurdo usare Change per certe operazioni e poi quasi alla fine di questa discussione te ne vieni fuori a dire che volevi usarlo per filtrare via via durante l'inserimento.
Se tu avessi detto subito cosa andavi cercando avremmo evitato incomprensioni e perdite di tempo.

Quindi prendi la supposta matita (nel senso di quella che si suppone sia una grossa matita anche se assomiglia a una supposta) e annotati: Quando inseriamo il primo post della discussione, è molto importante spiegare bene e chiaro cosa vorremmo che il nostro codice facesse.
Titolo: Re:[RISOLTO] Datasource.Filter errore stringa - perchè?
Inserito da: ilfurlan - 18 Febbraio 2017, 18:59:24
Ah quello! E già, non mi ci far pensare è da li che ho iniziato a sprecare tempo nel tentativo di farti capire che è assurdo usare Change per certe operazioni e poi quasi alla fine di questa discussione te ne vieni fuori a dire che volevi usarlo per filtrare via via durante l'inserimento.
Se tu avessi detto subito cosa andavi cercando avremmo evitato incomprensioni e perdite di tempo.

Quindi prendi la supposta matita (nel senso di quella che si suppone sia una grossa matita anche se assomiglia a una supposta) e annotati: Quando inseriamo il primo post della discussione, è molto importante spiegare bene e chiaro cosa vorremmo che il nostro codice facesse.

Ok, mea culpa
Preso nota con la matita/supposta