Avatar billede megabyte_ Nybegynder
17. september 2000 - 19:13 Der er 18 kommentarer og
1 løsning

for løkke + SQL

hey

Hvor for fanden virker det her ikke

for X := 0 to stklist.Count-1 do;
showmessage(inttostr(typelist.count -1));
begin;
with main.Query1 do
  begin
  close;
  SQL.Clear;
  sql.add(\'SELECT varenummer from produkt\');
  Listbox1.items.add(stklist[x] + \' stk \' + main.lagerRxQuery.FieldByName(\'varenavn\').AsString);
  SQL.Add(\'Where varenummer := typelist[X]\');
    end;
  end;

den siger \"list index out of bounds (3)\"

<MB>
Avatar billede pellelil Nybegynder
17. september 2000 - 19:30 #1
Hvad med din \"Typelist\" er dette også et array der starter med element nummer 0 og indeholder den (mindste) lige så mange elementer some stklist ????
Avatar billede megabyte_ Nybegynder
17. september 2000 - 19:31 #2
jep det gør
Avatar billede megabyte_ Nybegynder
17. september 2000 - 19:31 #3
det er derfor jeg sætter den -1 for t få den til at inde golde det samme antal
Avatar billede sjensen Nybegynder
17. september 2000 - 20:17 #4
Du skal skrive:

SQL.Add(\'Where varenummer := \'+typelist[X]);

Avatar billede pellelil Nybegynder
17. september 2000 - 20:17 #5
Skulle din \"for-løkke\" ikke ende med \"do begin\" i stedet for \"do;\" ???
Avatar billede sjensen Nybegynder
17. september 2000 - 20:23 #6
Pellelil, din gamle svinger: Så du virkeligt ikke den fejl ??

I øvrigt Megabyte, som pellelil skriver: Hvis din kode ser ud sådan som du har vist den virker den ikke. Forloopet er ok, bortset fra a tdet blot tæller x op og det svarer til at skrive x := stklist.count -1;

Men check lige det semikolon der er bag den første begin. Det vil Compileren ikke acceptere så jeg gætter på at du blot har lavet fejlen da du skrev spørgsmålet.
Avatar billede pellelil Nybegynder
17. september 2000 - 20:53 #7
Sjensen> din endnu ældre svinger :-)

Jeg tror faktisk at delphi vil tillade et semikolon der hvilket blot bil betyde at for-løkken er tom.
Avatar billede sjensen Nybegynder
17. september 2000 - 23:32 #8
pellelil, det med forløkken er rigtigt. Når der er semikolon efter do er den er bare tom som du siger og x ender med at være værdien for stklist.count -1. Delphi accepterer denne form for programmering. Hvad jeg mente ville gå galt er det semikolon megabyte har efter den første \"begin\".(lidt inden \"With main..\") Det accepterer delphi ikke.
Avatar billede sjensen Nybegynder
18. september 2000 - 00:04 #9
I øvrigt pellelil, det jeg mente med fejlen er den fejl i SQL.add jeg skriver i mit svar. Ikke en fejl i forløkken, men det har du vel opdaget nu ;-)
Avatar billede megabyte_ Nybegynder
19. september 2000 - 08:37 #10
Well har fundet fejlen det var en dum taste fejl :)
men fatter det ikke helt den vil ikke læse varenavn ud fra databasen det tager bare det samme :(

<MB>
Avatar billede sjensen Nybegynder
19. september 2000 - 08:51 #11
kom lige igen megabyte,

Du spørger hvor fejlen er, jeg viser dig det og du afviser mit svar.

Bagefter påstår du at det er en tastefejl og at du stadig har en fejl fordi den ikke vil læse varenavn ud af databasen. Altså får du løsningen på dit spørgsmål, men laver det lynhurtigt om til et andet.

Luk lige øjnene op en gang:

Select varenummer from...

Hvor skulle varenavn komme fra ??

Du skal selvfølgeligt også have varenavn med i din select eller måske endda en stjerne \"select * from..\" for at få adgang til alle felterne.

Avatar billede pellelil Nybegynder
19. september 2000 - 08:55 #12
Ro på mulde <G>
Avatar billede megabyte_ Nybegynder
19. september 2000 - 09:01 #13
soory det var meningen jeg ville accepter dit svar da det både var taste fejl og så det skide  soory.
welll men den vil stadig væk ikke læse varanavn ud den kommer altid med det samme selv om jeg har select * from ....
håber i kan hjælpe :)

<MB>
Avatar billede sjensen Nybegynder
19. september 2000 - 09:21 #14
ok, helt i orden.

Vedr. varenavn er det fordi du bruger

Listbox1.items.add(stklist[x] + \' stk \' + main.lagerRxQuery.FieldByName(\'varenavn\').AsString);

men du har ikke positioneret main.lagerRxQuery med en select. Måske skulle det i stedet være:

Listbox1.items.add(stklist[x] + \' stk \' + main.Query1.FieldByName(\'varenavn\').AsString);

Hvis den SKAL hente varenavn fra main.lagerRxQuery skal du først finde frem til recorden med f.eks. en select magen til den select du har fra produkt. Men det er vel fra main.query1 du burde bruge ?

Ellers virker din kode lidt forkert, så hvis du kort forklarer hvad det er du vil, vil jeg gerne komme med et forslag til en ændret kode.
Avatar billede megabyte_ Nybegynder
19. september 2000 - 09:26 #15
Well
jeg har en data skrint i en database som se sådan ud 3,10;4,20 som så bliver til 3 stk af vare nummer 10 og 4 stk af vare nummer 20
det virker oxo fint men jeg skal have den til at læse varenavn ud fra en database

<MB>
Avatar billede megabyte_ Nybegynder
21. september 2000 - 11:09 #16
select hvad mener du med det ???
hvis jeg bruger
Listbox1.items.add(stklist[x] + \' stk \' + main.Query1.FieldByName(\'varenavn\').AsString);
siger den bare at varenavn ikke findes i den string :(
<MB>
Avatar billede sjensen Nybegynder
21. september 2000 - 12:32 #17
ja, der er fordi du kun selecter varenummer:

Skriv \"select varenummer, varenavn from produkt\" istedet, så virker det.
Avatar billede megabyte_ Nybegynder
21. september 2000 - 12:53 #18
Hmm nop bruger select * from produkt
så det skulle virker

<MB>
Avatar billede pellelil Nybegynder
21. september 2000 - 12:55 #19
Taler vi hastighed/optimering er det vigtig KUN at select lige nøjagtig de felter du har brug for (og ikke andet)
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