Avatar billede korup Nybegynder
04. maj 2001 - 02:35 Der er 5 kommentarer og
1 løsning

Hvordan skal jeg hente mine data!

Hej JEg håber der er nogen der kan hjælpe jeg har lavet et lækkert (Efter egen mening) SQL-kald, og jeg får det rigtige udtræk når jeg kører det i min INTERBASE klient. Men jeg kan ikke så det ind i min Vector, så jeg kan vise det i et JTable..

Her er koden:

  Vector overskrift_3 = new Vector();
  Vector indhold_3a = new Vector();
     
  overskrift_3.addElement(\"Sælger\");
  overskrift_3.addElement(\"Km\");
  overskrift_3.addElement(\"Antal besøg\");
  overskrift_3.addElement(\"Salg (KR)\");
  overskrift_3.addElement(\"Salg ($)\");
     
  ResultSet ObjRS3 = db.opslag(\"SELECT SAELGER.NAVN,(SELECT SUM(KOERSEL.KM) FROM KOERSEL WHERE KOERSEL.S_NR = SAELGER.S_NR),(SELECT COUNT(BESOEG.SE_NR) FROM BESOEG, KOERSEL WHERE KOERSEL.S_NR = SAELGER.S_NR AND KOERSEL.K_NR = BESOEG.K_NR),(SELECT SUM(BESOEG.SALG) FROM BESOEG, KOERSEL WHERE SAELGER.S_NR = KOERSEL.S_NR AND KOERSEL.K_NR = BESOEG.K_NR),(SELECT AVG(PRISOPLYSNINGER.D_KURS) FROM PRISOPLYSNINGER)FROM SAELGER;\");
  try
  {
    ObjRS3.next();
    do {
      indhold_3a.addElement(saelger(ObjRS3));
    } while ( ObjRS3.next()); 

   
    salgere = new JTable( indhold_3a, overskrift_3 );
       
    JScrollPane scroller3 = new JScrollPane( salgere );
    scroller3.setBounds(new Rectangle(20,270,520,100));
    validate();
    Panel.add(scroller3,null);
    }
    catch(Throwable t)
    {
    System.out.println(t.getMessage());
    }
       
       
public Vector saelger(ResultSet ObjRS)
{
  Vector indhold_1b = new Vector();
  try
  {
    ResultSetMetaData rsmd = ObjRS.getMetaData();
    indhold_1b.addElement(ObjRS.getString(rsmd.getColumnName( 1 )));
    indhold_1b.addElement(ObjRS.getString(rsmd.getColumnName( 2 )));
    indhold_1b.addElement(ObjRS.getString(\"BESOEG.SE_NR\"));
    indhold_1b.addElement(ObjRS.getString(rsmd.getColumnType( 4 )));
    indhold_1b.addElement(ObjRS.getString(rsmd.getColumnType( 5 )));
    return indhold_1b;
  }
  catch(Throwable t)
    {System.out.println(\"FEJL I ALLE METODEN\");}
   
  return indhold_1b;
}   
Avatar billede logical Nybegynder
04. maj 2001 - 09:21 #1
Nu vil jeg ikke lige rigtigt afprøve det, så min kommentar bliver på det abstrakte plan.

Hvis du har afprøvet din SQL sætning, vil du se om den virker (hvad den formodentlig gør).

Når du udtrækker data derfra i saelger(ResultSet) metoden, kan du indeksere de enkelte kolonner med numre startende fra 1, så
indhold_1b.addElement(ObjRS.getString(1));
indhold_1b.addElement(ObjRS.getString(2));
etc.

Jeg tror nemlig, at nr. 3 ikke rigtig virker hvis du ikke har nogen kolonne, som hedder BESOEG.SE_NR.

Det er korrekt at du kan trække metadata ud fra dit resultatsæt og udskrive kolonnenavne, har du set hvor mange kolonner der er, og hvad de hedder?
System.out.println(rsmd.getColumnCount());
System.out.println(rsmd.getColumnName(3));
etc.
Avatar billede disky Nybegynder
04. maj 2001 - 09:42 #2
Hvor er det lige det går galt ?

Forresten hvis det skal laves rigtigt pænt så lav en klasse som kun indeholder data, så skal du kun lægge et object på din vectorlist istedet for mange.
Avatar billede logical Nybegynder
04. maj 2001 - 12:47 #3
Det er rigtigt, at et objekt er pænere, men han skal bruge de enkelte oplysninger til en JTable component, som forventer en Vector af row data,det er derfor han gør sådan.
Ellers er vi helt enige.
Avatar billede korup Nybegynder
13. maj 2001 - 21:51 #4
Hej Logical
der ligger faktisk 85 point og venter men du har jo kun oprettet en kommentar og ikke et svar så jeg kan ikke give dig point..

/korup
Avatar billede logical Nybegynder
14. maj 2001 - 07:17 #5
Ok, så prøv nu!
Avatar billede korup Nybegynder
14. maj 2001 - 17:51 #6
Hej Logical
Her er så pointene og jeg siger tak for hjælpen, det var jo ikke så svært men jeg kogte virkelig, Jeg kunne ikke se skoven for bare træer..
Endnu engang tak håber at du vil hjælpe en anden gang hvis der skulle blive nødvendig!!

/korup
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