30 messaggi dal 27 marzo 2002
Salve a tutti,
forse è un problema banale ma...
Ho un database che contiene dei record che hanno alcuni campi vuoti. Il form di interrogazione ha tante textbox quanti sono i campi. Quando faccio una richiesta (naturalmente devo aver la possibilità di riempire anche una sola delle textbox), mi vengono restituiti solo quei record che hanno tutti i campi pieni gli altri niente.
Se tutti i record presentano un campo vuoto, come risultato ho una pagina bianca.

es:
se cerco Antonio mi vengono restituiti solo gli Antonio che presentano tutti i campi del db pieni.

(Un problema simile l'ho anche nella pagina di inserimento record: se non riempio tutti i campi del form mi viene dato un errore.)

Come faccio per evitare questo?
(Ho scritto al forum esperti ma non lo sono)
Grazie
Luca

O cambi le impostazioni del database accettando anche i campi vuoti oppure metti all'inizio del codice della pagina di inserimento record
on error resume next
Il problema che ti vengono restituiti solo i record che hanno i campi pieni non è molto chiaro, ma potresti parametrizzare la ricerca per non avere problemi o mettere tutto sotto condizione. Forse è meglio che posti un po' di codice.
Ciao


Alberto Biancardo
6 messaggi dal 02 marzo 2001
Ciao, premesso che io non sono di certo un esperto procederei in questo modo:
suppongo che tu usi Oracle:
1) verifica (per quanto riguarda il problema dell'inserimento) che i campi del DB non siano "NOT NULL"i, in questo caso ti restituisce un errore se cerchi di inserire un valore nullo.
2)per quanto riguarda invece l'estrazione ti consiglio di non eseguire una " select * " ma di specificare tutti i campi, a volte se sono presenti dei campi " number " la " select * " restituisce "-1"
cioè il recordset è nullo; prova magari prima ad eseguire un a
" select cont(*) from tabella " così saprai quanti record legge la tua query.... non mi vangono altri suggerimenti per ora....spero che ti possano essere comunque utili..
Buona giornata.

296 messaggi dal 09 marzo 2001
..Forse non ho capito bene .. ma il problema ce l'hai quando fai una select ...??
Se è cos' controlla il valore delle text prima di comporre la query ...
oppure prova a cercare con la Like .. invece che con nomecampo = Valoretext ...

30 messaggi dal 27 marzo 2002
Premetto che uso dreamweaverUD4,e Access2000. Di codice poco poco ho scartabellato mille libri asp ma...

la pagina dei risultati ha questa impostazione, naturalmente ogni 'MM...' ha la sua corrispettiva Request(...) valore predefinito %

SELECT *
FROM Anagrafica_Utenti
WHERE Cognome LIKE 'MMcognome%' AND Nome LIKE 'MMnome%' AND Sesso LIKE 'MMsesso%' AND id_titoli LIKE 'MMstudio' AND Data_di_nascita LIKE 'MMnascita%' AND Città_residenza LIKE 'MMcitta%'

Esempio:
nel db ho 5 antonio, di cui uno ho come valore vuoto il campo citta_residenza.
cerco antonio nel form textbox "nome" , invio il form e come risultato ho solo 4 antonio, mi manca proprio quello con il campo citta_residenza vuoto.

Ho pensato, il form spedisce sia le textbox scritte sia quelle vuote, che prendono come valore quello predefinito (%). Di conseguenza non trovando alcun valore, nel db, a cui riferirsi non visualizzano quel record.
Può essere questo il motivo?

Ringrazio tutti per l'attenzione
Luca

Mi stavo appunto chiedendo come aveva fatto Benji.g a supporre che il database fosse Oracle, dato che non è certo dei più diffusi e quasi solo ad uso professionale.

Per me da' questo problema perchè hai impostato la select con AND e fino a che il parametro che gli dai non soddisfa tutte le condizioni non lo trova.Fai tante select distinte e non una sola unita con AND.




Alberto Biancardo
30 messaggi dal 27 marzo 2002
Cioè? così? (se è si ho provato: stesso risultato)

SELECT Cognome, Nome, Sesso ...ecc.?
FROM Anagrafica_Utenti
WHERE Cognome LIKE 'MMcognome%' AND Nome LIKE 'MMnome%' AND Sesso LIKE 'MMsesso%' AND id_titoli
LIKE 'MMstudio' AND Data_di_nascita LIKE 'MMnascita%' AND Città_residenza LIKE 'MMcitta%'

No. E' la logica dell' AND che non va. Come fai tu gli dici di trovarti i dati dove(where) campo cognome è come (like) mmcognome, e dove (and) nome è come mmnome, e dove ecc. In pratica ti trova il record solo se sono soddisfatti tutti i requisiti:cognome deve essere uguale a mmcognome, ma non lo trova se anche nome non è uguale a mmnome, residenza a mmcittà, ecc.In definitiva se non inserisci un dato o il dato manca, non viene trovato il record.
Io farei qualcosa del genere:
strsql= "select * from Anagrafica_Utenti WHERE Cognome LIKE 'MMcognome%' "
strsql= "select * from Anagrafica_Utenti WHERE Nome LIKE 'MMnome%' "
strsql= "select * from Anagrafica_Utenti WHERE Sesso LIKE 'MMsesso%' "
.........ecc.
Cioè delle select indipendenti, ma tutto dipende da come hai organizzato la ricerca(cioè se il dato da ricercare lo inserisci in un solo textbox o meno).


Alberto Biancardo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.