Avatar billede masteraaen Novice
12. april 2006 - 17:41 Der er 15 kommentarer og
3 løsninger

Betingelse i forespørgsel

Hejsa.

Jeg har nogle poster inddelt i journalnumre i Acces.
Journalnummeret er desværre ikke blot et simpelt tal, og derfor har jeg problemer, når jeg vil afgrænse min forespørgsel til kun at omfatte et interval af journalnumre.

Mine journalnumre har formen: xxxx-xxx-xx, alle udfyldt med heltal. Fx: 1501-001-04

Det jeg gerne vil er at lave en forespørgsel, som jeg afgrænser til journalnumre, der ligger i intervallet:
1550-000-00 til 1699-999-99.
Jeg regner bestemt med at denne afgrænsning skal skrives i feltet "kriterier:" under designvisningen af forespørgslen.

Er der nogen, der kan hjælpe mig med det?

Jeg bruger Access 2003.
Avatar billede Slettet bruger
12. april 2006 - 17:47 #1
journalnumre between '1550-000-00' and '1699-999-99'

skulle være fint nok til at skaffe det omtalte interval.
Avatar billede weaponx Nybegynder
12. april 2006 - 17:52 #2
Det kommer ikke til at virke. Du bliver nødt til at kode en funktion med et loop der kunstigt lægger en til ved at splitte de 3 tal. Problemet er at access ikke vil godkende tal i det format.

jeg skal lige lege lidt med det
Avatar billede fdata Forsker
12. april 2006 - 17:59 #3
Det ser ud som om dine journalnumre i virkeligheden er sammensat af 3 individuelle felter. Da du ønsker et "pænt" interval, kan du i linjen Kriterier
- under JournalNrFelt1 skrive Between 1500 And 1600
- under JournalNrFelt2 skrive Between 0 And 999
- under JournalNrFelt3 skrive Between 0 And 99
(de to nederste er måske endda overflødige)
Avatar billede weaponx Nybegynder
12. april 2006 - 18:06 #4
Jeg er enig i at det letteste vil være at splitte det i 3 felter i tabellen. Jeg skal lige høre om det er nødvendigt at de ligger i et felt i formen xxxx-xxx-xx, det kan godt lade sig gøre, men det kræver en del kode.
Avatar billede fdata Forsker
12. april 2006 - 18:15 #5
Øøh. "Mine journalnumre har formen: xxxx-xxx-xx, alle udfyldt med heltal. Fx: 1501-001-04". Er det ikke allerede 3 felter?
Avatar billede weaponx Nybegynder
12. april 2006 - 18:30 #6
Ikke nødvendigvis. Man kunne splitte dem op bearbejde dem. Bare lige noget hurtigt kode der langtfra gør alt den skal:

Public Function journalnummer(Start As String, Slut As String)
Dim strStart As String
Dim strStart01 As String
Dim strStart02 As String
Dim strStart03 As String
Dim strSlut As String
Dim strSlut01 As String
Dim strSlut02 As String
Dim strSlut03 As String

strStart = Start
strStart01 = Left(strStart, 4)
strStart02 = Right(Left(strStart, 8), 3)
strStart03 = Right(strStart, 2)

strSlut = Slut
strSlut01 = Left(strSlut, 4)
strSlut02 = Right(Left(strSlut, 8), 3)
strSlut03 = Right(strSlut, 2)

End Function
Avatar billede masteraaen Novice
12. april 2006 - 18:59 #7
De ligger samlet i eet felt som indtastet fx. "1501-001-04". Det vil være et helt enormt arbejde at splitte dem i tre felter for mig.
Jeg tænkte på, om man kan bruge jokers på en måde, så man fx skriver noget i retning af:

Kriterier: Journalnummer>1550* and Journalnummer<1700*, hvor * (jokeren) naturligvis beskriver, at det er lige meget med resten...
Er det helt ude i hampen?
Avatar billede fdata Forsker
12. april 2006 - 19:05 #8
.. så når du skrev "alle udfyldt med heltal" var det bare for at forvirre! ;o)

Du har selv (næsten) angivet løsningen:
  Journalnummer>"1550" And Journalnummer<"1700"
("1550-xxx-xx" er større end "1550")
Avatar billede weaponx Nybegynder
12. april 2006 - 19:07 #9
Helt ude i hampen ;p

Du bliver nødt til at splitte dem som jeg skriver, smide resultaterne over i en array eller en midlertidig tabel og præsentere dem for brugeren.

strStart01-03 og strSlut01-03 skal være integer og dernæst skal der lave noget i stil med:

dim db as database
dim rs as dao.recordset
dim strSQL as string

set db = currentdb
set rs = db.openrecordset(strSQL)

with rs
'split den funde record og sammenlign den med intervallet, hvis den matcher så gør noget med den funde record

end with

rs.close
Avatar billede Slettet bruger
12. april 2006 - 23:32 #10
SELECT Left([Tal],4) AS Udtryk1
FROM Tal
WHERE (((Left([Tal],4))>=1550 And (Left([Tal],4))<1700));
Avatar billede Slettet bruger
13. april 2006 - 06:11 #11
Undskyld, men IMHO kan ikke se have alt det hekseri skal til for. Set som tekst, og det skal man så bare accepterer så vil

journalnumre between '1550-000-00' and '1699-999-99'

fungere, da eksempelvis 1550-100-00 som tekst string betragtet ligger mellem '1550-000-00' og '1699-999-99'. At anvende journalnumrene som tekst kræver selvfølgeligt lidt viden om hvordan de er stykket sammen men du kan sammenligne med datoer, som hvis de skrives med notationen yyyymmmdd kan sorteres som tekst og det samme gør sig gældende her.
Avatar billede masteraaen Novice
13. april 2006 - 13:43 #12
Jeg  må indrømme, at jeg ikke forstår en helt masse af den kode til at sortere det. Jeg ved ikke engang, hvor jeg skal skrive den / eksekvere den.

Men hvad med at jeg i min tabel indsætter en kolonne mere, der henter sine værdier fra Journalnummeret fx. ved at være noget i retning af

=Left("JournalNummer";4), så får jeg mulighed for at afgrænse på de første fire cifre i journalnummeret i min forespørgsel.
Problemet ved ovenstående syntaks er at den returnerer "Jour" som standardværdi i stedet for at se i feltet JournalNummer og tage de første fire karakterer fra venstre...
Avatar billede Slettet bruger
14. april 2006 - 12:47 #13
=Left([journalnummer];4)

Men du skal ikke udvide din tabel...

Det hele foregår i designgitteret for din forespørgsel, der er en række, som hedder kriterie og her skriver du:

>=1550-000-00 AND <1700-000-00

eller som mit svar 12/04-2006 23:32:25 (som jo nok var lidt for indforstået) laver man en ekstra kolonne i forespørgslen som hedder:

Udtryk1: Left([journalnummer],4)

og nede som kriterie:
>=1500 AND <1700

Det er egentlig disse 2 variationer af stort set samme løsning, som flg. besvarelser/kommenterer er kommet med:

Svar: kryptos
12/04-2006 17:47:12
Kommentar: fdata
12/04-2006 19:05:10
Svar: spg
12/04-2006 23:32:25
Kommentar: kryptos
13/04-2006 06:11:14

Jeg håber du får det til at virke!~)
Avatar billede Slettet bruger
20. april 2006 - 23:19 #14
Virker det?~)
Avatar billede masteraaen Novice
22. april 2006 - 16:52 #15
Hejsa!

Undskyld det sene svar. Jeg har haft travlt. Det virke minsandten! :-) Tak for hjælpen :-)
Avatar billede masteraaen Novice
22. april 2006 - 17:02 #16
virker
Avatar billede fdata Forsker
22. april 2006 - 17:29 #17
Fint. Tak for point
Avatar billede Slettet bruger
25. april 2006 - 13:10 #18
!~)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester