Avatar billede mundt Nybegynder
15. september 2004 - 11:37 Der er 11 kommentarer og
3 løsninger

clng() giver overløb

I feltet i en forespørgsel har jeg angivet følgende formatering: Leder cprnummer: IIf(IsNull([cprnr])=Sand;CInt("0000000000");CLng([cprnr])). [cprnr] stammer fra en tabel. Når jeg kører forespørgslen får jeg fejlmeddelsen - "Der opstod et overløb". Jeg har forsøgt at lave en forespørgsel som gør det samme i en database og det virker. Endvidere virker det hvis jeg laver en ny forespørgsel i samme database som henter data fra [cpr]. Forespørgslen som fejler har mange felter. I det nedenstående er forespørgslens SQL-tekst:

SELECT DISTINCT CInt(IIf([AfdID]='00','1',IIf([SektID]='00','2','3'))) AS Organisationsniveau, tblOrganisationsid.Organisationsid, IIf([Organisationsniveau]='1',[insttxt],IIf([Organisationsniveau]='2',[afdtxt],[sekttxt])) AS Langtnavn, UCase(Left([Langtnavn],5)) AS Kortnavn, qryOrganisationshiraki.tblOrganisationsid.Organisationsid AS [Overligggende organisationsid], Now() AS Oprettetdata, Now()+360 AS Slutdato, "R" AS Status, IIf(IsNull([cprnr])=True,CInt("0000000000"),CLng([cprnr])) AS [Leder cprnummer], tblInstiVA.AdmOmrID AS Organisationsomraade, tblInstiVA.InstTypID AS Organisationstype, tblInstiVA.AdmOmrID AS Administrationsomraade, tblInstiVA.IASnavn AS Adressenavn, tblInstiVA.Adresse AS Vejnavn, "" AS Placering, tblInstiVA.StedKode AS Stednavn, IIf(IsNull([postnr])=True,0,CLng([Postnr])) AS Postnummer, 'DK' AS Landekode
FROM (((tblInstiVA LEFT JOIN tblLederiVA ON tblInstiVA.LederId = tblLederiVA.LederID) LEFT JOIN tblAD_MedArb ON (tblLederiVA.ForNvn = tblAD_MedArb.ForNvn) AND (tblLederiVA.EfterNvn = tblAD_MedArb.EfterNvn)) INNER JOIN tblOrganisationsid ON (tblInstiVA.InstID = tblOrganisationsid.InstID_) AND (tblInstiVA.AfdID = tblOrganisationsid.AfdID_) AND (tblInstiVA.SektID = tblOrganisationsid.SektID_)) INNER JOIN qryOrganisationshiraki ON tblOrganisationsid.Organisationsid = qryOrganisationshiraki.qryOverliggendeOrganisationsid.Organisationsid;
Avatar billede bri2004 Nybegynder
15. september 2004 - 11:42 #1
Har du undersøgt formatet på [cprnr] feltet for bindestreger og mellemrum. Hvis feltet er i tekst format kan der også være foran stillede mellemrum.
Avatar billede bri2004 Nybegynder
15. september 2004 - 11:42 #2
Har du undersøgt formatet på [cprnr] feltet for bindestreger og mellemrum. Hvis feltet er i tekst format kan der også være foran stillede mellemrum.
Avatar billede mundt Nybegynder
15. september 2004 - 12:18 #3
Der er ingen bindestreger og ej heller mellemrum.
Avatar billede jkrons Professor
15. september 2004 - 12:32 #4
En long kan ikke nødvendigvis indeholde et cprnummer. En long kan indeholde tal op til 2147000000 ca. Det vil sige, at hvis du er født senere end den 21 i en måned, vil clng)= give overløb.
Avatar billede mundt Nybegynder
15. september 2004 - 12:33 #5
OK - er der en anden datatype om kan 'rumme' et cprnummer?
Avatar billede erikjacobsen Ekspert
15. september 2004 - 12:33 #6
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctclng.asp

clng konverterer en streng med cifre til en long, der går fra ca. -2 milliarder
til ca. +2 milliarder. Et CPR nummer, med en fødselsdato et stykke oppe i 20-erne,
fx.  2901010101  er over +2 milliarder.

Men et CPR-nummer skal du ikke opfatte som et tal - det er en streng med cifre.
Avatar billede jkrons Professor
15. september 2004 - 12:34 #7
fx er a = CLng(2147483647) OK

mens

a = CLng(2147483648) giver overflow.
Avatar billede jkrons Professor
15. september 2004 - 12:35 #8
Ja, du kan gemme dit cprnummer i en Single
Avatar billede jkrons Professor
15. september 2004 - 12:37 #9
Og den tilhørende konverteringsfunktion er CSng
Avatar billede bri2004 Nybegynder
15. september 2004 - 12:42 #10
et alternativ kunne være double eller beholde det som tekst. Så ville du kunne tilføje en ekstra dimension (et foranstillet tal eller bogstav), hvis personen eksempelvis var bosiddende i sverige eller tyskland.
Avatar billede mundt Nybegynder
15. september 2004 - 12:51 #11
Jeg har besluttet at arbejde med CPR-nummeret som en streng. Jeg mangler lige et svar fra dig erikjacobsen!
Avatar billede erikjacobsen Ekspert
15. september 2004 - 12:54 #12
Fint nok, men jeg samler slet ikke på point, tak.
Avatar billede mundt Nybegynder
15. september 2004 - 12:55 #13
Tak for hjælpen alle tre!!
Avatar billede jkrons Professor
15. september 2004 - 13:20 #14
Velbekomme
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