Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:27 Der er 25 kommentarer og
1 løsning

Format

Hejsa Eksperter.

Jeg er ved at lave et system, som skal gøre det nemmere at indtaste elever i en Access-database.

Eleverne bliver trukket ud fra et andet system i en komma-sepereret txt-fil. fx:

8a, bent0204, Bent Hansen
8a, kurt0301, Kurt Hansen
5b, skoe3921, Skoe Hansen

Problemet er nu, at jeg vil gøre systemet variabelt. Hvordan får jeg systemet til at tage den 1. linie i txt-filen (8a, bent0204, Bent Hansen) og vende den om, så alle kombinationer kommer frem i en <SELECT> box??

Altså, hvordan får jeg scriptet til at vende linien?

8a, bent0204, Bent Hansen
8a, Bent Hansen, bent0204
Bent Hansen, 8a, bent0204
Bent Hansen, bent0204, 8a
bent0204, 8a, Bent Hansen
bent0204, Bent Hansen, 8a
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 23:33 #1
Put dine data i en tabel ved navn personer med felterne klasse, login og navn. Kør denne her for at danne det som du vil putte i din <SELECT>:

SELECT klasse || ", " || login || ", " || navn FROM personer
UNION
SELECT navn ||', ' || klasse || ", " || login FROM personer
UNION
SELECT login || ", " || klasse || ", " || navn FROM personer

og så fremdeles.
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 23:33 #2
Ups. Det skulle have været

SELECT klasse || ', ' || login || ', ' || navn FROM personer
UNION
SELECT navn ||', ' || klasse || ', ' || login FROM personer
UNION
SELECT login || ', ' || klasse || ', ' || navn FROM personer
Avatar billede eagleeye Praktikant
23. januar 2003 - 23:34 #3
Du kan bruger Spilt på komma og så bygge din <SELECT> op..:

str = "8a, bent0204, Bent Hansen"
navnArr = Spilt(str,",")
Response.write "<select name=""xxx"">"
Response.write "<option>" & navnArr(0) & ", " & navnArr(1) & ", " & navnArr(2) & "</option>"
Response.write "<option>" & navnArr(0) & ", " & navnArr(2) & ", " & navnArr(1) & "</option>"
Response.write "<option>" & navnArr(2) & ", " & navnArr(0) & ", " & navnArr(1) & "</option>"
Response.write "<option>" & navnArr(2) & ", " & navnArr(1) & ", " & navnArr(0) & "</option>"
Response.write "<option>" & navnArr(1) & ", " & navnArr(0) & ", " & navnArr(2) & "</option>"
Response.write "<option>" & navnArr(1) & ", " & navnArr(1) & ", " & navnArr(0) & "</option>"
Response.write "</selec>"
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 23:36 #4
Denne gang er din hurtigere :-)
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:37 #5
ja, det er meget godt.... tak for svarene under alle omstændigheder.

Hvordan laver jeg systemet, så det er variabelt? Dvs. de data der trækkes ud som txt-fil ændres?

Hvis nu der kommer 5 ting med i stedet for kun 3 som i eksemplet fra før? Jeg vil have et script der er fuldstændigt variabelt.
Avatar billede eagleeye Praktikant
23. januar 2003 - 23:38 #6
For at læse føste linie:


Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set file = objFSO.OpenTextFile("c:\xxx\testfil.txt",1)

str = file.readline
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:41 #7
ja, det har jeg nemlig også...

hvordan laves systemet så, at script lige løber den første linie igennem og ser hvor mange informationer der er. Og så skal der laves alle mulige kombinationer...
Avatar billede eagleeye Praktikant
23. januar 2003 - 23:45 #8
stadig med , i mellem?
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:46 #9
ja
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 23:53 #10
Det kræver noget kodning hvor du har to løkker indeni hinanden.

Den yderste løkke læser en linie fra filen og putter hvert felt i et array.

Den inderste udskriver samtlige kombinationer af de fundne felter.

Noget helt andet: har du overvejet hvor uyggeligt mange kombinationer, du får?

Hvis du virkelig vil have *alle* kombinationer, vil du f. eks. med 5 felter få 5! (5*4*3*2 = 120) rækker for hver linie, du læser ind fra filen. For en klasse med 20 elever, kommer der til at være 2400 linier i din <SELECT>.

Linierne

Bent Hansen, 8a, bent0204
Bent Hansen, bent0204, 8a

i dit eksempel tyder på det. Det synes jeg altså ikke er en god idé.
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:54 #11
nej, det var kun den første linie i txt-filen der skulle køres i gennem, dvs. 1 elev' informationer.
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:55 #12
sorry, det gør dit eksempel også...
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:56 #13
jeg SKAL bruge alle kombinationerne, kan du ikke vise mig noget kode?
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 23:58 #14
Jeg skal i seng nu. Beklager. Jeg kunne godt forestille mig at eagleeye er ved at skrue noget sammen.
Avatar billede jens_jul Nybegynder
23. januar 2003 - 23:58 #15
ok, takker
Avatar billede eagleeye Praktikant
23. januar 2003 - 23:59 #16
Som _darkstar_ skrivr det kræver noget med to loops inde i hinanden + noget snedigt udvægelse af hvile array index der skal vises.
Avatar billede _darkstar_ Nybegynder
24. januar 2003 - 00:01 #17
Iøvrigt er jeg imponeret af at du virker så determineret. Hvad nytte har man af en <SELECT> med 2400 valgmuligheder?

Hvis hver linie er på bare 50 tegn, vil den løbe op i 100kb!

Jeg har set systemer knække fuldstændig sammen på grund af den slags beslutninger.
Avatar billede _darkstar_ Nybegynder
24. januar 2003 - 00:02 #18
Et elelr andet sted har du bedt mig om at hjælpe dig med at skyde dig selv i foden. Hvis der er en rigtig god forklaring imorgen, vil jeg prøve at se hvad jeg kan gøre.
Avatar billede jens_jul Nybegynder
24. januar 2003 - 00:03 #19
jamen snakken om de 2400 er helt unødvendig. Du snakker om 20 elever. Ja, der er mange elever, men der skal kun tages den første linie fra txt-filen som eksempel.

Vi snakker også kun rent hypotetisk her, 3 informationer er det normale i skole systemerne, 4 måske, men aldrig 5. Brugte det kun som et ekspempel, ok?
Avatar billede eagleeye Praktikant
24. januar 2003 - 00:09 #20
Jeg kan heller ikke lige komme med en smart løsning nu, skal i seng nu.
Avatar billede _darkstar_ Nybegynder
24. januar 2003 - 00:10 #21
Med tre felter og 20 elever:
3! = 6
6 * 20 = 120 liniers <SELECT>

Med fire felter og 20 elever:
4! = 24
24 * 20 = 480 liniers <SELECT>

Allerede ved tre felter er det altså et problem. 120 linier er *meget* at skulle overskue. Når du når de fire felter så knækker det. Det er så min mening.

Hvis eagleeye eller en anden alligevel gerne vil hjælpe dig, er det fint, men jeg tror altså ikke at du vil bruge koden særligt længe når først du har prøvet den i praksis.
Avatar billede _darkstar_ Nybegynder
24. januar 2003 - 00:11 #22
Pænt godnat.
Avatar billede jens_jul Nybegynder
24. januar 2003 - 00:18 #23
jamen for fanden....

DER ER IKKE SNAKKE OM 20 ELEVER PÅ NOGET TIDSPUNKT!

Det er den første linie i txt-filen der skal bruges som eksempel!!!

Har du ikke set mit eksempel??

Det er 1 elev og ikke 20 elever, ok???
Avatar billede jens_jul Nybegynder
24. januar 2003 - 00:19 #24
scriptet skal ikke løbe 20 elever igennem, men den første linie, dvs. 1 linie.
Avatar billede jens_jul Nybegynder
27. januar 2003 - 17:08 #25
lukker
Avatar billede _darkstar_ Nybegynder
27. januar 2003 - 20:38 #26
jenl_jul>> Jeg vil faktisk rigtig gerne lave den kode som du skal bruge, men jeg har pt. ikke tid. Jeg smider den som kommentar her, hvis jeg får mulighed for at få den lavet.
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