Carattere di percentuale in query sql, AIUTO

venerdì 27 giugno 2008 - 23.16

basicdany Profilo | Expert

ciao a tutti, volevo chiedervi: in una query che eseguo con vb.net 2003 su un db access 2003 di questo tipo:

SELECT * FROM tabella WHERE percentuale=bnl 1%

IL PROBLEMA CHE IO DEVO PRENDERE TUTTI CAMPI CHE HANNO COME CAMPO =bnl 1%
sql però esegue la query in un altro modo preleva tutti i campi che anno come inzio campo "bnl 1"
questo perche intende la percentuale come carattere per prendere tutti i calore...non so se ho reso chiaro
il problema.
grazie a tutti.

Cteniza Profilo | Guru

"Prova a mettere il nome con [] es: [% iva], se ancora non funziona prova con "% iva" (doppio apice = chr34)"
Beh avevo quanto meno letto male la domanda.
Credo che per cercare un apice in un campo di tipo testo sia necessario raddoppiare il %, se si tratta di un campo intero o decimale la % fa parte della formattazione e non va messa.

DomA Profilo | Expert

sel il capo percentuale è un campo di testo allora puoi dichiarati una variabile per eseguire la ricerca Es

Dim TestoRic as string = me.txtRicerca.text

poi esegui la query in questo modo:

"SELECT * FROM tabella WHERE percentuale = '" & TestoRic & "'"

così se nella textbox di ricerca (ndr txtRicerca) inserisci il testo bnl 1% la ricerca ristetuirà i record che contengono nel campo percentuale bnl 1%; txtRicerca = bnl 2% la ricerca ristetuirà i record che contengono nel campo percentuale bnl 2% e così via.

Buon lavoro

Domenico Mancina

basicdany Profilo | Expert

ciao, ho provato a fa re come mi hai spiegato, ma i record che seleziona,
sono uguali si per bnl 1% che per bnl 1,75%
quindi siginifica che il campo percentuale loc considera come se dovesse prendere tutti i caratteri dopo la percentuale.
spero possa aiutarmi.
grazie

Cteniza Profilo | Guru

Forse e meglio che mostri il vero codice che utilizzi che non funziona e non il falso codice "percentuale = bnl 1%" che hai mostrato.
E' impossibile che utilizzando l'operatore = anche in presenza di % che il % sia considerato carattere jolly ed estragga cose diverse da "bnl 1%".

basicdany Profilo | Expert

ciao, grazie per l'interesse:

dim appo as string= txtbanca.txt

sql="SELECE * FROM Archivio WHERE banca=""" & appo & """

oleAdapter.SelectCommand = New OleDbCommand(Sql, cn)

ecc.ecc.

grazie

Cteniza Profilo | Guru

No, è certo che se la tua banca con una stringa del genere (a parte che è sbagliata):
sql="SELECE * FROM Archivio WHERE banca=""" & appo & """
In presenza di
archivio.banca
bnl 2%
bnl 1%
bnl 1,1%
bnl 1,71%
Utilizzando = come operatore come tu hai usato è impossibile che escano insieme
bnl 1%
bnl 1,1%
bnl 1,71%
Questo anche se avessi una combinazione:
bnl %1
bnl %1,1
bnl %1,71
Cercando con bnl % non uscirebbe niente
Cercando con bnl 1% uscirebbe solo la prima
In definitiva .. fai molto prima a fare delle prove sul tuo sql management che presentare "falsificato" il tuo problema qui.
Se vuoi che ti si aiuti devi presentare il tuo problema in modo tale che chiunque lo possa ripetere e provare.
In altre parole se si introduce una query sql come quella che hai presentato non otterrai mai il risultato che lamenti.

basicdany Profilo | Expert

ciao, ti spiego meglio il problema, se eseguo la query con banca=bnl 1% o banca=bnl 1,75% mi carica i stessi record, ecco perche ti ho presentato il problema sulla percentuale, perchè so che il campo percentuale, prende tutti i caratteri? o mi sto sbagliando?
la query e questa:

Sql = "SELECT * FROM Pratica WHERE (Data > #" & AppoDataDa & "# AND Data < #" & AppoDataA & "# OR Data = #" & AppoDataDa & "# OR Data = #" & AppoDataA & "#) AND Banca LIKE """ & cmbBanca.Text & """ ORDER BY Data"

cn = New OleDbConnection(ConnString)
cn.Open()

Dim oleAdapter As New OleDbDataAdapter

oleAdapter.SelectCommand = New OleDbCommand(Sql, cn)

Dim ds As New DatasetStampaPratica

ds.Clear()

oleAdapter.Fill(ds, "Pratica")

Dim rep As New CrystalDecisions.CrystalReports.Engine.ReportDocument

rep.Load(Application.StartupPath & "\RtpBanche.rpt")

rep.SetDataSource(ds)

CRV.ReportSource = rep

cn.Close()

Spero di essermi spiegato,
grazie aspetto gentile aiuto

Cteniza Profilo | Guru

Su access il carattere jolly e * e non %

basicdany Profilo | Expert

Come risolvo il problema?

ciao

basicdany Profilo | Expert

ciao, e quindi come risolvo il problema? sono certo che il campo % mi crea questo problema prende tutti i record
che hanno come inizio campo il testo prima del simbolo di percentuale.
Insomma campo="bnl 1"% prende tutti record che hanno come inizio testo "bnl 1" a ME SERVER CHE DEVE
PRENDERE I RECORD CHE HANNO COME CAMPO "bnl 1%"

Puoi aiutarmi, la soluzione e rendere la percentuale una semplice carattere e non un carattere speciale!

grazie

DomA Profilo | Expert

Sei sicuro di aver inserito nella select l'operatore = e non LIKE?
quel che dici mi sembra piuttosto strano
Domenico Mancina
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5