Avatar billede Jman Praktikant
04. december 2002 - 15:35 Der er 28 kommentarer og
2 løsninger

hvad gør man når sql er for komplex ?

Jeg har en rimelig lang søgefunktion, hvor jeg skal kigge ned i en helvedes masse felter.
Efter at have delt funktionen op i flere linier, får jeg at vide at
"Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Query is too complex.

/administrationen/mappearkiv/soeg.asp, line 124"
søgelinierne starter på line 31 og slutter på linie 124
Avatar billede colg Nybegynder
04. december 2002 - 15:36 #1
lol det var langt
Avatar billede colg Nybegynder
04. december 2002 - 15:36 #2
du kunne ik dele den op i 2-3 maybe flere sql strings?
Avatar billede Jman Praktikant
04. december 2002 - 15:37 #3
Ja, min er lang :D

tjoh, men hvorledes samler man den så igen - når man skal vise resultatet af søgningen
Avatar billede colg Nybegynder
04. december 2002 - 15:39 #4
hmmmm
Avatar billede colg Nybegynder
04. december 2002 - 15:40 #5
bare et forslag ved ik om det vil virke såen rent teknisk men prøv at dele den op i flere og skriv thing = strSQL1 & srtSQL2 o.s.v.... gennem den alle og execute thing
Avatar billede arne_v Ekspert
04. december 2002 - 15:50 #6
Lav en to-lags model:

1)  Nederste lag af SQL laver du som queries i selve din
    access database, her forbereder du ligesom
    data

2)  Øverste lag af SQL laver du i din ASP, denne SQL
    bruger de queries der allerede er defineret og
    kan derfor (forhåbentligt !) blive meget meget
    simplere.
Avatar billede Jman Praktikant
04. december 2002 - 15:58 #7
colg -> stadig too complex (jeg har delt den op i 3)
arne_v -> den fattede jeg ikke.. Hvad er det jeg skal foreberede i min DB?
Avatar billede rasmusmoller Nybegynder
04. december 2002 - 16:06 #8
Er det muligt at se den komplette SQL? (altså den du sender mod databasen)
Avatar billede burningice Nybegynder
04. december 2002 - 16:07 #9
superior>> lav en query i access... gem den og referer til den istedet fra din asp side... måske skulle du også kigge lidt på basic database-design, for det lyder som om at din database er aller helvedes dårligt designet !!
Avatar billede arne_v Ekspert
04. december 2002 - 16:14 #10
Et meget meget simpelt eksempel.

Før:
  SELECT * FROM ((A JOIN B ON A.K=B.K) JOIN C ON A.K=C.K) JOIN D ON A.K=D.K;

Efter:

Access query JoinAB =
SELECT * FROM A JOIN B ON A.K=B.K;

Access query JoinCD =
SELECT * FROM C JOIN D ON C.K=D.K;

ASP query =
SELECT * FROM JoinAB JOIN JoinCD ON A.K=C.K;
Avatar billede Jman Praktikant
04. december 2002 - 16:16 #11
det er lige som om query giver op inden, den har læst den igennem - den svarer i hvert fakld med fejl meget hurtigt...

koden:
<%
Dim objRec, antal
antal = 0
Set Conn = Server.CreateObject("ADODB.Connection")
Set objRec = Server.CreateObject("ADODB.recordset")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("mappearkiv.mdb")
sql1 = "SELECT * FROM faner WHERE nummer like '%" & hvilket & "%' "
sql1 = sql1 & "OR navn like '%" & hvilket & "%' "
sql1 = sql1 & "OR emne like '%" & hvilket & "%' "
sql1 = sql1 & "OR ansvarlig like '%" & hvilket & "%' "
sql1 = sql1 & "OR ansvarlig like '%" & hvilket & "%' "
sql1 = sql1 & "OR afdeling like '%" & hvilket & "%' "
sql1 = sql1 & "OR selskab like '%" & hvilket & "%' "
sql1 = sql1 & "OR selskab like '%" & hvilket & "%' "
sql1 = sql1 & "OR opretdato like '%" & hvilket & "%' "
sql1 = sql1 & "OR indhold_fra like '%" & hvilket & "%' "
sql1 = sql1 & "OR indhold_til like '%" & hvilket & "%' "
sql1 = sql1 & "OR arkivdato like '%" & hvilket & "%' "
sql1 = sql1 & "OR plac_rum like '%" & hvilket & "%' "
sql1 = sql1 & "OR plac_sektion like '%" & hvilket & "%' "
sql1 = sql1 & "OR plac_reol like '%" & hvilket & "%' "
sql1 = sql1 & "OR plac_hylde like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_1 like '%" & hvilket & "%' OR descr_1 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_2 like '%" & hvilket & "%' OR descr_2 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_3 like '%" & hvilket & "%' OR descr_3 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_4 like '%" & hvilket & "%' OR descr_4 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_5 like '%" & hvilket & "%' OR descr_5 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_6 like '%" & hvilket & "%' OR descr_6 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_7 like '%" & hvilket & "%' OR descr_7 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_8 like '%" & hvilket & "%' OR descr_8 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_9 like '%" & hvilket & "%' OR descr_9 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_10 like '%" & hvilket & "%' OR descr_10 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_11 like '%" & hvilket & "%' OR descr_11 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_12 like '%" & hvilket & "%' OR descr_12 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_13 like '%" & hvilket & "%' OR descr_13 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_14 like '%" & hvilket & "%' OR descr_14 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_15 like '%" & hvilket & "%' OR descr_15 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_16 like '%" & hvilket & "%' OR descr_16 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_17 like '%" & hvilket & "%' OR descr_17 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_18 like '%" & hvilket & "%' OR descr_18 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_19 like '%" & hvilket & "%' OR descr_19 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_20 like '%" & hvilket & "%' OR descr_20 like '%" & hvilket & "%' "
sql1 = sql1 & "OR title_21 like '%" & hvilket & "%' OR descr_21 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_22 like '%" & hvilket & "%' OR descr_22 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_23 like '%" & hvilket & "%' OR descr_23 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_24 like '%" & hvilket & "%' OR descr_24 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_25 like '%" & hvilket & "%' OR descr_25 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_26 like '%" & hvilket & "%' OR descr_26 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_27 like '%" & hvilket & "%' OR descr_27 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_28 like '%" & hvilket & "%' OR descr_28 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_29 like '%" & hvilket & "%' OR descr_29 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_30 like '%" & hvilket & "%' OR descr_30 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_31 like '%" & hvilket & "%' OR descr_31 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_32 like '%" & hvilket & "%' OR descr_32 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_33 like '%" & hvilket & "%' OR descr_33 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_34 like '%" & hvilket & "%' OR descr_34 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_35 like '%" & hvilket & "%' OR descr_35 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_36 like '%" & hvilket & "%' OR descr_36 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_37 like '%" & hvilket & "%' OR descr_37 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_38 like '%" & hvilket & "%' OR descr_38 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_39 like '%" & hvilket & "%' OR descr_39 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_40 like '%" & hvilket & "%' OR descr_40 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_41 like '%" & hvilket & "%' OR descr_41 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_42 like '%" & hvilket & "%' OR descr_42 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_43 like '%" & hvilket & "%' OR descr_43 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_44 like '%" & hvilket & "%' OR descr_44 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_45 like '%" & hvilket & "%' OR descr_45 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_46 like '%" & hvilket & "%' OR descr_46 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_47 like '%" & hvilket & "%' OR descr_47 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_48 like '%" & hvilket & "%' OR descr_48 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_49 like '%" & hvilket & "%' OR descr_49 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_50 like '%" & hvilket & "%' OR descr_50 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_51 like '%" & hvilket & "%' OR descr_51 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_52 like '%" & hvilket & "%' OR descr_52 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_53 like '%" & hvilket & "%' OR descr_53 like '%" & hvilket & "%' "
sql2 = sql2 & "OR title_54 like '%" & hvilket & "%' OR descr_54 like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_a like '%" & hvilket & "%' OR descr_a like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_b like '%" & hvilket & "%' OR descr_b like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_c like '%" & hvilket & "%' OR descr_c like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_d like '%" & hvilket & "%' OR descr_d like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_e like '%" & hvilket & "%' OR descr_e like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_f like '%" & hvilket & "%' OR descr_f like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_g like '%" & hvilket & "%' OR descr_g like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_h like '%" & hvilket & "%' OR descr_h like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_ij like '%" & hvilket & "%' OR descr_ij like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_k like '%" & hvilket & "%' OR descr_k like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_l like '%" & hvilket & "%' OR descr_l like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_m like '%" & hvilket & "%' OR descr_m like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_n like '%" & hvilket & "%' OR descr_n like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_o like '%" & hvilket & "%' OR descr_o like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_pq like '%" & hvilket & "%' OR descr_pq like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_r like '%" & hvilket & "%' OR descr_r like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_s like '%" & hvilket & "%' OR descr_s like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_tu like '%" & hvilket & "%' OR descr_tu like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_vx like '%" & hvilket & "%' OR descr_vx like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_yz like '%" & hvilket & "%' OR descr_yz like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_ae like '%" & hvilket & "%' OR descr_ae like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_oeaa like '%" & hvilket & "%' OR descr_oeaa like '%" & hvilket & "%' "
sql3 = sql3 & "OR title_tal like '%" & hvilket & "%' OR descr_tal like '%" & hvilket & "%'"

searchSQL = sql1 & sql2 & sql3
ObjRec.Open searchSQL,conn,1,3
antal = objRec.recordcount
%>
Avatar billede arne_v Ekspert
04. december 2002 - 16:20 #12
Jeg tror, at du skal have reorganiseret din tabel-struktur !

Alle de der title_* felter skal nok være et felt i en
separat tabel som har et andet felt der peger over på
en anden tabel med resten af felterne.

[lidt gæt - jeg kender jo ikke din kontekst]
Avatar billede burningice Nybegynder
04. december 2002 - 16:23 #13
fåårk... man har sq ikke 80+ felter i en tabel...
Avatar billede arne_v Ekspert
04. december 2002 - 16:35 #14
Man kan måske nok have 80 felter i en tabel i visse
(meget specielle) tilfælde.

Men ikke her.
Avatar billede Jman Praktikant
04. december 2002 - 16:58 #15
jamen, det er det bedste jeg kender til det :(
hvad skulle jeg ellers ?
Avatar billede Jman Praktikant
04. december 2002 - 17:00 #16
det er til et system, hvor man indtaster oplysninger for indholdet af et ringbind. Herefter gemmes oplysninger i en søgbar database og samtidig printes en side ud fra de oplysninger man har tastet ind, som kan bruges til faneindeling i starten af ringbindet...
Avatar billede rasmusmoller Nybegynder
04. december 2002 - 18:02 #17
Det ligner snarere et Excel-ark :-)

Hvis Access mener at din SQL er for kompleks, er der nok ikke noget at gøre ved det... Men der er nu også et par kandidater i din tabel til en normalisering af data, f.eks. ansvarlig, afdeling og selskab (men det alene ville nok ikke løse dit problem).

Er det muligt at du kan bede brugeren vælge hvilken del af data der skal søges på, f.eks. om det er et af description eller titel felterne der skal søges i. På denne måde ville du få et par forskellige SQL kald, som forhåbentligt kan afvikles hver især uden problemer. (men du mister selvfølgelig noget funktionalitet idet man skal vælge en begrænset del af felterne der skal søges i)

Det lader til at det ikke er dig selv der har designet databasen, men som sagt ligner tabellen snarere et Excel ark med de mange felter udad. Er det virkeligt rigtigt at der udfyldes 54 titler og beskrivelser for hvert ringbind?
(mit umiddelbare gæt er at felterne title_1 til title_54 dækker over at der kan være op til 54 faneblade/sektioner i et ringbind, og hvis det er tilfældet er din database designet forkert, eftersom der så er tale om en en-til-mange relation mellem ringbind og faneblad/sektion)

Jeg ved godt at dette ikke løser dit konkrete problem, men jeg ville bede om et par timer til at redesigne systemet, hvis jeg var dig :-)

(Alternativt kan du flytte databasen over på en SQL Server/MSDE og se om den kan håndtere din SQL)
Avatar billede arne_v Ekspert
04. december 2002 - 18:09 #18
Alle de titler burde over i en separat tabel som et felt med
data under hinanden, men ned referance til den anden tabel.

Det vil ihvertfald være mere "normalt" fra en database
synsvinkel.
Avatar billede Jman Praktikant
04. december 2002 - 21:04 #19
rasmusoller:
Dine umiddelbare gæt er ret præcise :)  Problemet er bare at jeg ikke har arbejdet så meget med relationsdatabaser. Jeg ville meget gerne kunne lave det på en smartere måde, så hvis du kunne fortælle mig hvorledes jeg så skal gøre, vil jeg gerne smide max. point på ;)
Det som du egentlig ser i søgekoden er alle felterne (hvis brugeren ønsker at søge på alt) ud fra den devise at man skal kunne oprette en side med henholdsvis 5,10,12,15,20,31,54,alfsbetisk faneindex.
Udgangspunktet har jeg lavet således at de felter der ikke er title eller description udfyldes først (her vælges også antal faner) det bliver så postet og efterfølgende bliver man redirectet til en asp-side med ønskede antal faner, hvor man så fylder resten af indholdet ind i.

arne_v - hvad får du ud af at smide indholdet over i en anden db. felterne bliver jo de samme (i forhold til hvis f.eks index1+2+3+50+51 udfyldes, så skal alle de mellemliggende tal også være på index)
Avatar billede arne_v Ekspert
04. december 2002 - 21:05 #20
Ikke en anden database. En anden tabel.

Du får lang færre felter.

Du får langt simplere queries.
Avatar billede Jman Praktikant
04. december 2002 - 21:09 #21
ville du så lave en title_1 i en tabel, title_2 i en anden o.s.v. ?
Avatar billede arne_v Ekspert
04. december 2002 - 21:13 #22
Nej.

Lad os lave et forsimplet eksempel.

Du har en tabel:

navn  afdeling  titel_1  titel_2 titel_3
aaa      x      a1      a2      a3
bbb      y      b1      b2      b3

Jeg ville lave to tabeller:

navn afdeling
aaa    x
bbb    y

navn    titel
aaa    a1
aaa    a2
aaa    a3
bbb    b1
bbb    b2
bbb    b3

hvis rækkefølgen er vigtig, så kan den sidste laves som:

navn    nr  titel
aaa    1    a1
aaa    2    a2
aaa    3    a3
bbb    1    b1
bbb    2    b2
bbb    3    b3
Avatar billede arne_v Ekspert
04. december 2002 - 21:14 #23
Det er en helt anden måde at organisere data på.

Ikke længere "regneark" men "relations database".
Avatar billede rasmusmoller Nybegynder
05. december 2002 - 00:57 #24
Hej igen.

Umiddelbart ville jeg tro at du skal have følgende tabeller/felter i din database (for at kunne repræsentere ringbind/faner - jeg har ikke taget højde for afdelinger, ansvarlig osv). Desuden kender jeg ikke dine data godt nok til at kunne gøre antagelser om datatypen for de enkelte felter, så det har jeg undladt. Desuden har du en skøn blanding af danske og engelske feltnavne, så jeg har valgt at anvende danske navne. Du ændrer bare dette, hvis det skulle være et problem.

Tabel "Ringbind" med følgende felter:
nummer (udfra en antagelse om at dette er din primærnøgle - lader til at den er af typen "text")
navn
emne
ansvarlig
afdeling
selskab
opretdato
indhold_fra
indhold_til
arkivdato
plac_rum
plac_sektion
plac_reol
plac_hylde

Og en tabel "RingbindSektion" (eller "Faneblad" alt efter hvad du bedst kan lide):
RingbindNummer (fremmednøgle der relaterer til feltet "nummer" i Ringbind)
SektionId (tekst, f.eks. "A", "1" osv)
Titel
Beskrivelse
(RingbindNummer og SektionId udgør en sammensat primærnøgle for denne tabel)

- Jeg kom til at lave en lille Access test-database, hvor jeg f.eks. har følgende sub til at teste søgningen:
(bemærk at den lige skal rettes en lille smule til for at køre i ASP)

Sub DoSearch()

    Dim rst As New ADODB.Recordset
    Dim strSql As String, strSearch As String
   
    strSearch = InputBox("Angiv søgekriterie:")
   
    If strSearch <> "" Then
        strSearch = Replace(strSearch, "'", "''")
       
        strSql = "select rb.nummer" & vbNewLine & _
                "from Ringbind rb" & vbNewLine & _
                "where rb.navn like '%" & strSearch & "%'" & vbNewLine & _
                "  or exists (select *" & vbNewLine & _
                "              from RingbindSektion rbs" & vbNewLine & _
                "              where rbs.RingbindNummer = rb.nummer" & vbNewLine & _
                "              and (rbs.Titel like '%" & strSearch & "%' or rbs.Beskrivelse like '%" & strSearch & "%')" & vbNewLine & _
                "  )"
               
        rst.CursorLocation = adUseClient
        rst.Open strSql, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
        Set rst.ActiveConnection = Nothing
       
        Debug.Print "Fundne ringbind:"
        Do While Not rst.EOF
            Debug.Print "Ringbind nummer: " & rst("nummer")
            rst.MoveNext
        Loop
   
        rst.Close
    End If
   
    Set rst = Nothing
   
End Sub

(Hvis du er interesseret i den nævnte Access database, så skriv lige din e-mail adresse.)
Avatar billede burningice Nybegynder
05. december 2002 - 01:09 #25
rasmusmoller>> det her er asp... ikke WSH... ;)

1) alt bliver dimmet som variant i asp
2) man opretter objecter på denne måde: Set myObj = Server.CreateObject("")
3) man kan ikke bruge alertbox
Avatar billede rasmusmoller Nybegynder
05. december 2002 - 01:40 #26
Til cyberfessor:

Det ved jeg godt, men jeg forventer at folk godt kan finde ud af at indsætte den viste kode i den rette kontekst, f.eks. ASP. Manden har jo vist at han på trods af manglende kendskab til databaser trods alt godt kan finde ud af at skrive et par linjer ASP. (Der mangler f.eks. også nogle felter i SQL'en, og jeg har svært ved at gætte mig frem til hvilke informationer han ønsker at vise for de fundne ringbind).

Det var det som min kommentar "(bemærk at den lige skal rettes en lille smule til for at køre i ASP)" dækker over ;-)
Avatar billede Jman Praktikant
05. december 2002 - 10:14 #27
ok - det giver mig i hvert fald lidt mere at lege med (bortset fra at jeg skal lave 23 asp-sider om...suk)
man 1000 tak for hjælpen so far :)
Avatar billede rasmusmoller Nybegynder
05. december 2002 - 10:50 #28
Men jeg tror du vil blive gladere for det i sidste ende :-)

(og nu du er igang, kunne du jo samtidigt kigge på at oprette tabeller til afdelinger, ansvarlige o.lign.)
Avatar billede Jman Praktikant
05. december 2002 - 13:15 #29
hmm - sidder og prøver mig frem, men synes det virker uoverskueligt..
Jeg ville da meget gerne prøve atse den DB du har lavet, rasmus :)
mail: eksperten@jman.dk
Avatar billede Jman Praktikant
05. december 2002 - 17:34 #30
jeg evt. maile dig min DB+sider, så du kan se hvad det er jeg har lavet ?
Hvis du vil rette det til smider jeg meget gerne et spørgsmål op med 200p ;)
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