Avatar billede capion Nybegynder
09. december 2003 - 15:55 Der er 23 kommentarer og
1 løsning

"Fødselsdag i denne måned"-liste udfra CPR-numre !

Hvordan laver jeg en liste over "fødselsdage i denne måned" med NAVN, DAG OG ALDER udfra CPR-numre ?
dette er hvad jeg har (men aner ikke om det skal/kan bruges til noget i denne sammenhæng):
  foedselsdag = Left(cpr, 6)
  tempkunmon = Left(cpr, 4)
  kunmon = right(tempkunmon, 2)
  kundag = Left(cpr, 2)
  monnavn = Monthname(kunmon)
  kunaar = right(foedselsdag, 2)

mincpr = mid(cpr,5,2) + 1900
Aldre =  year(date()) - minCpr
Avatar billede mathiasrav Nybegynder
09. december 2003 - 16:00 #1
Her er lige en optimering af det nuværende script ;):

fodselsdag = Left(cpr, 6)
dag = Mid(fodselsdag, 1, 2)
mon = Mid(fodselsdag, 3, 2)
aar = Mid(fodselsdag, 5, 2)
monnavn = Monthname(mon)

minCpr = mid(cpr,5,2) + 1900
Alder = year(date()) - minCpr
Avatar billede mufoxe Nybegynder
09. december 2003 - 16:07 #2
DatePart("m", now()) = mon
Avatar billede eagleeye Praktikant
09. december 2003 - 16:42 #3
Skal den skrive ens alder nu eller skal den skrive hvor gammel man bliver?
Avatar billede mufoxe Nybegynder
09. december 2003 - 16:45 #4
Øh hvad var der galt med mit svar. Hvis du løber alle dine CPRnr igennem og laver den sammenligning, som jeg har skrevet ovenfor, skulle du gerne have en liste over alle person, som har fødselsdag i denne måned.
Avatar billede capion Nybegynder
09. december 2003 - 16:48 #5
Det jeg vil have er en rutine, der genererer en side med hhv:
Navn, Dato og Alder i DENNE måned(i listeform..)
og da meget gerne i den logiske form med hvor gammel man så bliver, som Alder (tak for hintet!)

helst i tabelform..

for i = ?? to
response.write noget
until EOF.. eller hvad det hedder.. liste-generering

Hvis jeg ku´gav jeg mere i point *S*
Avatar billede mufoxe Nybegynder
09. december 2003 - 16:50 #6
hvor får du dine data fra ?!
Avatar billede capion Nybegynder
09. december 2003 - 16:54 #7
fra min access-database, hvor eet af felterne er "cpr", f.eks. 240763xxxx (x'et med vilje her på siden *S*)
Avatar billede eagleeye Praktikant
09. december 2003 - 16:57 #8
Eks du skal lgige havde et recordset som hendter ra din database:


Response.write "<table>"
Response.write "<tr><td>Navn</td><td>Dato</td><td>Alder</td></tr>"
do while not rs.EOF
  dato = Left(rs("cpr"),2) & "-" & Mid(rs("cpr"),3,2) & "-19" & Mid(rs("cpr"),5,2)
  if Month(Date) = Month(dato) then
    Response.Write "<tr><td>" & rs("navn") & "</td>"
    Response.Write "<tr><td>" & dato & "</td>"
    Response.Write "<tr><td>" & Year(Date)-Year(dato) & "</td>"
    Response.Write "</tr>"
  end if
  rs.Movenext
loop
Response.write "</table>"
Avatar billede mufoxe Nybegynder
09. december 2003 - 16:58 #9
Du har sikkert et recordset med data i.

' Hent record set
Do While Not recordSetData.BOF And Not recordSetData.EOF
  mon = Mid(recordSetData("fodselsdag"), 3, 2)
  If mon = DatePart("m", Now()) Then
    Response.Write(recordSetData("fodselsdag") & " " & recordSetData("navn") & "<br>")

  End If

Loop

Det der giver dig en liste over folk, som har fødselsdag i denne månede.
Avatar billede capion Nybegynder
10. december 2003 - 08:40 #10
Hej gutter!"
Jeg testkører lige Jeres forslag / løsninger
Avatar billede capion Nybegynder
10. december 2003 - 09:36 #11
EagleEye:
jeg får denne fejl:
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "--19"]'

/vej/personale/Default.asp, line 297


LINIEN ER:
if Month(Date) = Month(dato) then

Hvorfor mon det ??
Avatar billede capion Nybegynder
10. december 2003 - 12:39 #12
det er som om, at den pludselig forstår måneden som tekst i stedet for tal ??
der er ikke lavet om på datatyper eller andet "tjavs"
Hvad gør jeg ?
Avatar billede eagleeye Praktikant
10. december 2003 - 16:33 #13
Ligger CPR nummeret som 240763xxxx  eller som 24-07-63xxxx ?
Avatar billede eagleeye Praktikant
10. december 2003 - 16:37 #14
Har du nogle records hvor CPR ikke er udfyldt det kunne nemlig se sådan ud???

Så prøv dette som tjekke på som CPR er tom:



Response.write "<table>"
Response.write "<tr><td>Navn</td><td>Dato</td><td>Alder</td></tr>"
do while not rs.EOF
  cpr = "" & rs("cpr")
  if cpr = "" then
    dato = Left(cpr,2) & "-" & Mid(cpr,3,2) & "-19" & Mid(cpr,5,2)
    if Month(Date) = Month(dato) then
      Response.Write "<tr><td>" & rs("navn") & "</td>"
      Response.Write "<tr><td>" & dato & "</td>"
      Response.Write "<tr><td>" & Year(Date)-Year(dato) & "</td>"
      Response.Write "</tr>"
    end if
  end if
  rs.Movenext
loop
Response.write "</table>"
Avatar billede capion Nybegynder
16. december 2003 - 09:50 #15
nu har jeg prøvet frem og tilbage, og lavet om på en del, men intet virker..
Får bare internal servererror hhtp500 (siden kan ikke vises).
Formatet på CPR er 2407630000, altså tal, uden mellemrum

se lige om jeg er helt ude i tågen her:
<html>
<head>
 
</head>
<body>
<%
Response.Buffer = true

  Dim objConn
  Dim objRec
  Dim hit
 
  Set objConn = Server.CreateObject ("ADODB.Connection")
  Set objRec = Server.CreateObject ("ADODB.Recordset")

  strConnect = "Data Source=D:\Sites\bases\MSAccess.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"

  objConn.Open strConnect

  objRec.Open "folk", objConn, 0, 1, 2

  Do While Not objRec.EOF
  hit = "" & objRec("CPR")
  if hit = "" then
    dato = Left(CPR,2) & "-" & Mid(CPR,3,2) & "-19" & Mid(CPR,5,2)
    if Month(Date) = Month(dato) then
      Response.Write "<tr><td>" & objRec("name") & "</td>"
      Response.Write "<tr><td>" & dato & "</td>"
      Response.Write "<tr><td>" & Year(Date)-Year(dato) & "</td>"
      Response.Write "</tr>"
    end if
  end if
    objRec.MoveNext
  Loop
Response.write "</table>"

  objRec.Close
  objConn.Close
  Set objRec = Nothing
  Set objConn = Nothing
  Set hit = Nothing
%>
</body>
</html>
Avatar billede capion Nybegynder
16. december 2003 - 13:41 #16
ØV! kan man slet ikke hæve point-niveauet ??
Avatar billede eagleeye Praktikant
16. december 2003 - 16:42 #17
Både Ja og Nej. Der må max gives 200 point for et spørgsmål. Så du har afsat max point og kan derfor ikke sætte det op.
Normat kan det gøres ved at tykke på selv point tallet i øveste linje efter flaget, eller i menuen funktion "Afsæt flere point" mener jeg den hedder.
Avatar billede eagleeye Praktikant
16. december 2003 - 17:01 #18
forøvrigt kigger lige på din kode.
Avatar billede eagleeye Praktikant
16. december 2003 - 17:08 #19
her ligge cpr nummeret over i hit = "" & objRec("CPR")
og her forvendter man det er i variablen CPR.
Samt denne if sætning hit = "" skal være hit <> ""
Der var et par <tr><td> som skulle være <td>

så prøv denne kode:

<html>
<head>
 
</head>
<body>
<%
Response.Buffer = true

  Dim objConn
  Dim objRec
  Dim hit
 
  Set objConn = Server.CreateObject ("ADODB.Connection")
  Set objRec = Server.CreateObject ("ADODB.Recordset")

  strConnect = "Data Source=" &  server.mappath("db10.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"

  objConn.Open strConnect

  objRec.Open "folk", objConn, 0, 1, 2

Response.Write "<table>"
  Do While Not objRec.EOF
  hit = "" & objRec("CPR")
  if hit <> "" then
    dato = Left(hit,2) & "-" & Mid(hit,3,2) & "-19" & Mid(hit,5,2)
    if Month(Date) = Month(dato) then
      Response.Write "<tr><td>" & objRec("name") & "</td>"
      Response.Write "<td>" & dato & "</td>"
      Response.Write "<td>" & Year(Date)-Year(dato) & "</td>"
      Response.Write "</tr>"
    end if
  end if
    objRec.MoveNext
  Loop
Response.write "</table>"

  objRec.Close
  objConn.Close
  Set objRec = Nothing
  Set objConn = Nothing
  Set hit = Nothing
%>
</body>
</html>
Avatar billede eagleeye Praktikant
16. december 2003 - 17:09 #20
doh....

Denne linje i kodebn jeg lige har vist:
strConnect = "Data Source=" &  server.mappath("db10.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"


Skal naturligvis være:

strConnect = "Data Source=D:\Sites\bases\MSAccess.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"
Avatar billede capion Nybegynder
17. december 2003 - 09:10 #21
SÅDAN!.. TAK FOR HJÆLPEN OG RIGTIG GOD JUL!
(den kører bare som den skal, med navn, dato og alder)
Avatar billede capion Nybegynder
17. december 2003 - 09:12 #22
UPS!.. TIL JER DER KIGGER "KODEN AF"! DET ER DEN SIDSTE DEL (16/12) FRA EAGLEEYE, IKKE DEN ACCEPTEREDE.
UNDSKYLD FEJLEN !
Avatar billede capion Nybegynder
17. december 2003 - 12:41 #23
!!.. der er fejl !!
Koden checker om der er sammenfaldende tal i datoen, således bliver alle datoer med sammenfald på nuværende måneds tal listet; f.eks. nu er det 12 måned, så alle i måned 12, december, kommer med..godt nok, men!.. alle der har fødselsdag d.12.xx kommer også med !
HVORFOR ??
Avatar billede capion Nybegynder
17. december 2003 - 13:18 #24
jeg har selv fundet en løsning:
<html>
<head>
 
</head>
<body>
<%
Response.Buffer = true

  Dim objConn
  Dim objRec
  Dim hit
 
  Set objConn = Server.CreateObject ("ADODB.Connection")
  Set objRec = Server.CreateObject ("ADODB.Recordset")

strConnect = "Data Source=D:\Sites\bases\MSAccess.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"

  objConn.Open strConnect

  objRec.Open "folk", objConn, 0, 1, 2

Response.Write "<table>"
  Do While Not objRec.EOF
  hit = "" & objRec("CPR")
  if hit <> "" then
    dato = Left(hit,2) & "-" & Mid(hit,3,2) & "-19" & Mid(hit,5,2)
    mon = Mid(hit,3,2)
If mon = Right(CStr(100+Month(Date)), 2)then
      Response.Write "<tr><td>" & objRec("name") & "</td>"
      Response.Write "<td>" & dato & "</td>"
      Response.Write "<td>" & Year(Date)-Year(dato) & "</td>"
      Response.Write "</tr>"
    end if
  end if
    objRec.MoveNext
  Loop
Response.write "</table>"

  objRec.Close
  objConn.Close
  Set objRec = Nothing
  Set objConn = Nothing
  Set hit = Nothing
%>
</body>
</html>

Hvor rettelsen er denne:
    mon = Mid(hit,3,2)
If mon = Right(CStr(100+Month(Date)), 2) then
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
Kurser inden for grundlæggende programmering

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