/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Søge DB poster med tomme felter?
Fra : Henning Smed Sørense~


Dato : 12-07-06 20:15

Hej,

I min Access database har jeg brug for at søge alle poster hvor felterne
"Telephone" eller "Groups" eller "Functions" er tomme.
Hvordan er syntaks for at finde et tome felter?
Jeg har uden held forsøgt med flere variationer af:

SQLstmt = "SELECT * FROM tblMyTable WHERE 1=1 " or Telephone='' or Groups=''
or Function='' Order By FirstName ACS"
..
Jeg har midlertidigt løst opgaven ved at hente alle poster fra databasen og
med IF THEN kun vise poster hvor "Telephone" eller "Groups" eller
"Functions" er tomme.

M.v.h.
Henning



 
 
Jan Vinten (12-07-2006)
Kommentar
Fra : Jan Vinten


Dato : 12-07-06 20:26


Henning Smed Sørensen wrote:
> Hej,
>
> I min Access database har jeg brug for at søge alle poster hvor felterne
> "Telephone" eller "Groups" eller "Functions" er tomme.
> Hvordan er syntaks for at finde et tome felter?
> Jeg har uden held forsøgt med flere variationer af:
>
> SQLstmt = "SELECT * FROM tblMyTable WHERE 1=1 " or Telephone='' or Groups=''
> or Function='' Order By FirstName ACS"
> .
> Jeg har midlertidigt løst opgaven ved at hente alle poster fra databasen og
> med IF THEN kun vise poster hvor "Telephone" eller "Groups" eller
> "Functions" er tomme.
>
> M.v.h.
> Henning

Hej Henning,

Nu har jeg ikke lige installeret Access på computeren, men i MySQL
gøres det faktisk som du selv beskriver ovenfor.

Dog forstår jeg ikke hvorfor du har WHERE 1=1 " med i din SQL
sætning.

Uden nærmere tests vil jeg mene din sætning skal se sådan ud:

SQLstmt = "SELECT * FROM tblMyTable WHERE Telephone = '' OR Groups=''
OR Function='' ORDER BY FirstName ACS"

Et lille sidespringstip er, at en god ide er at skrive SQL kommandoer
med stort, som ovenfor - på den måde, synes jeg, det er nemmere at
skelne mellem hvad der er SQL kommandoer og "kode/variabler".

Jeg håber ovenstående SQL sætning virker for dig - ellers giv lige
mere info.. evt. hvis du får fejl eller ingen resultater retur.

/ Jan


Henning Smed Sørense~ (12-07-2006)
Kommentar
Fra : Henning Smed Sørense~


Dato : 12-07-06 21:15


"Jan Vinten" <jan.vinten@gmail.com> skrev i en meddelelse
news:1152732334.417249.141780@h48g2000cwc.googlegroups.com...
> I min Access database har jeg brug for at søge alle poster hvor felterne
> "Telephone" eller "Groups" eller "Functions" er tomme.
> Hvordan er syntaks for at finde et tome felter?
> Jeg har uden held forsøgt med flere variationer af:
>
> SQLstmt = "SELECT * FROM tblMyTable WHERE 1=1 " or Telephone='' or
> Groups=''
> or Function='' Order By FirstName ACS"

Dog forstår jeg ikke hvorfor du har WHERE 1=1 " med i din SQL
sætning.

Uden nærmere tests vil jeg mene din sætning skal se sådan ud:

SQLstmt = "SELECT * FROM tblMyTable WHERE Telephone = '' OR Groups=''
OR Function='' ORDER BY FirstName ACS"

hej Jan,

Tak for dit svar..

SELECT * FROM tblMyTable WHERE ContactFunction = '' OR Telephone = '' OR
Groups = '' ORDER BY StationCode ASC

Giver 15 poster, men ikke alle tomme felter, jeg gætter på at værdien ikke
er '' i alle felter men er Null (isNull).
Hvis jeg søger alle poster derefter filtrerer med nedensånde IF sætning får
jeg 25 poster.
DO WHILE NOT rs.EOF
'IF rs("Telephone") = "" or isNull(rs("Telephone")) or rs("ContactFunction")
= "" or isNull(rs("ContactFunction")) or rs("Groups") = "" or
isNull(rs("Groups")) Then
%>
<td align="left"><%=rs("FirstName")%></td>
<%
'End IF
%>

M.v.h.
Henning





Jan Vinten (12-07-2006)
Kommentar
Fra : Jan Vinten


Dato : 12-07-06 22:02


Henning Smed Sørensen wrote:
> "Jan Vinten" <jan.vinten@gmail.com> skrev i en meddelelse
> news:1152732334.417249.141780@h48g2000cwc.googlegroups.com...
> > I min Access database har jeg brug for at søge alle poster hvor felterne
> > "Telephone" eller "Groups" eller "Functions" er tomme.
> > Hvordan er syntaks for at finde et tome felter?
> > Jeg har uden held forsøgt med flere variationer af:
> >
> > SQLstmt = "SELECT * FROM tblMyTable WHERE 1=1 " or Telephone='' or
> > Groups=''
> > or Function='' Order By FirstName ACS"
>
> Dog forstår jeg ikke hvorfor du har WHERE 1=1 " med i din SQL
> sætning.
>
> Uden nærmere tests vil jeg mene din sætning skal se sådan ud:
>
> SQLstmt = "SELECT * FROM tblMyTable WHERE Telephone = '' OR Groups=''
> OR Function='' ORDER BY FirstName ACS"
>
> hej Jan,
>
> Tak for dit svar..
>
> SELECT * FROM tblMyTable WHERE ContactFunction = '' OR Telephone = '' OR
> Groups = '' ORDER BY StationCode ASC
>
> Giver 15 poster, men ikke alle tomme felter, jeg gætter på at værdien ikke
> er '' i alle felter men er Null (isNull).
> Hvis jeg søger alle poster derefter filtrerer med nedensånde IF sætning får
> jeg 25 poster.
> DO WHILE NOT rs.EOF
> 'IF rs("Telephone") = "" or isNull(rs("Telephone")) or rs("ContactFunction")
> = "" or isNull(rs("ContactFunction")) or rs("Groups") = "" or
> isNull(rs("Groups")) Then
> %>
> <td align="left"><%=rs("FirstName")%></td>
> <%
> 'End IF
> %>
>
> M.v.h.
> Henning

Hej igen,

Har som sagt ikke Access, men nedenstående burde også virke:

SQLstmt = "SELECT * FROM tblMyTable WHERE Telephone = '' OR Groups=''
OR Function='' OR Telephone IS NULL OR Groups IS NULL OR Function IS
NULL ORDER BY FirstName ACS

Her checker du igen alle 3 rækker for om de er '' eller IS NULL.

/ Jan


Ukendt (13-07-2006)
Kommentar
Fra : Ukendt


Dato : 13-07-06 10:48


"Jan Vinten" <jan.vinten@gmail.com> wrote in message
news:1152738140.229539.307410@p79g2000cwp.googlegroups.com...

Henning Smed Sørensen wrote:
>
> SELECT * FROM tblMyTable WHERE ContactFunction = '' OR Telephone = '' OR
> Groups = '' ORDER BY StationCode ASC
>
> Giver 15 poster, men ikke alle tomme felter, jeg gætter på at værdien ikke
> er '' i alle felter men er Null (isNull).
> Hvis jeg søger alle poster derefter filtrerer med nedensånde IF sætning
> får
> jeg 25 poster.
> DO WHILE NOT rs.EOF
> 'IF rs("Telephone") = "" or isNull(rs("Telephone")) or
> rs("ContactFunction")
> = "" or isNull(rs("ContactFunction")) or rs("Groups") = "" or
> isNull(rs("Groups")) Then
> %>
> <td align="left"><%=rs("FirstName")%></td>
> <%
> 'End IF
> %

"Jan Vinten" <jan.vinten@gmail.com> wrote in message
news:1152738140.229539.307410@p79g2000cwp.googlegroups.com...

Har som sagt ikke Access, men nedenstående burde også virke:

SQLstmt = "SELECT * FROM tblMyTable WHERE Telephone = '' OR Groups=''
OR Function='' OR Telephone IS NULL OR Groups IS NULL OR Function IS
NULL ORDER BY FirstName ACS

Her checker du igen alle 3 rækker for om de er '' eller IS NULL.


Mange tak for hjælpen Jan !

Med chech for IS NULL og '' får jeg alle tomme poster.

Mvh
Henning



Jørn Andersen (13-07-2006)
Kommentar
Fra : Jørn Andersen


Dato : 13-07-06 23:49

On Thu, 13 Jul 2006 11:47:55 +0200, "Henning Smed" <henning snabela
smeds.dk> wrote:

>"Jan Vinten" <jan.vinten@gmail.com> wrote in message
>news:1152738140.229539.307410@p79g2000cwp.googlegroups.com...
>
>Har som sagt ikke Access, men nedenstående burde også virke:
>
>SQLstmt = "SELECT * FROM tblMyTable WHERE Telephone = '' OR Groups=''
>OR Function='' OR Telephone IS NULL OR Groups IS NULL OR Function IS
>NULL ORDER BY FirstName ACS
>
>Her checker du igen alle 3 rækker for om de er '' eller IS NULL.
>
>
>Mange tak for hjælpen Jan !
>
>Med chech for IS NULL og '' får jeg alle tomme poster.

Man kan måske så overveje, *hvorfor* der både er felter med
Null-værdier og felter med tommme strenge.

Formentlig er det fordi en bruger ikke indtaster noget, og din UPDATE
eller INSERT-streng ét sted indeholder noget i retning af
....'" & strIndsatVaerdi & "' ...
og et andet sted måske ikke tilføjer noget, hvis der ikke er angivet
en værdi for feltet.
(Blot et gæt ...)

Det kan være en god idé at fange problemet ved roden og sætte værdien
til Null, hvis strengen er tom. Det betyder selvfølgelig et par ekstra
liniers kode - noget i retning af:
strIndsatVaerdi = Trim("" & strIndsatVaerdi)
If strIndsatVaerdi = "" Then
' indsæt Null
Else
' indsæt værdien
End if

På denne måde behøver du kun checke for Null-værdien - og får en
simplere søgning.

Good luck!

--
Jørn Andersen,
Brønshøj

Henning Smed Sørense~ (15-07-2006)
Kommentar
Fra : Henning Smed Sørense~


Dato : 15-07-06 06:47


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:atidb2l3vvu1cid9n4q691peplrivbii5n@4ax.com...

>>Med chech for IS NULL og '' får jeg alle tomme poster.
>
> Man kan måske så overveje, *hvorfor* der både er felter med
> Null-værdier og felter med tommme strenge.
>
> Formentlig er det fordi en bruger ikke indtaster noget, og din UPDATE
> eller INSERT-streng ét sted indeholder noget i retning af
> ...'" & strIndsatVaerdi & "' ...
> og et andet sted måske ikke tilføjer noget, hvis der ikke er angivet
> en værdi for feltet.
> (Blot et gæt ...)
>
> Det kan være en god idé at fange problemet ved roden og sætte værdien
> til Null, hvis strengen er tom. Det betyder selvfølgelig et par ekstra
> liniers kode - noget i retning af:
> strIndsatVaerdi = Trim("" & strIndsatVaerdi)
> If strIndsatVaerdi = "" Then
> ' indsæt Null
> Else
> ' indsæt værdien
> End if
>
> På denne måde behøver du kun checke for Null-værdien - og får en
> simplere søgning.
>
> Good luck!

Tak for dit forslag Jørn,

Jeg har arvet tabellerne fra en eksisterende Access database så jeg aner
ikke hvilken værdi der findes i tomme felter. Når der ændres eller oprettes
nye poster vil jeg afprøve dit forslag i valideringen.

God weekend
Henning



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste