|
| 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
| |
|
|