Avatar billede homsabu Nybegynder
22. februar 2005 - 15:47 Der er 7 kommentarer og
1 løsning

Sql forespørgsel skal brugeren kunne reducere

Hey eksperter

Jeg er ved at lave en program med database over en masse studerende på en skole. Jeg arbejder i Delphi 4 og m. en Paradox-database...
Det er sådan at der er et edit felt hvor brugeren kan søge efter studerende f.eks fra en bestemt by.
nedeunder i samme form er der en masse edit felter som referere til navn, adresse, tlf, postnr osv på den studerende som man vil ændre i.
Det jeg mangler hjælp til er at når man klikker på "søg" knappen skal der åbne et nyt vindue med de muligheder (læs:studerende) der er fra den by man søger på. I dette popup vindue skal man kunne klikke på én(!) af de studerende hvis data så returneres til den oprindelige form og vises i de føromtalte edit-felter... Men hvordan??! jeg går ud fra at det nye vindue (popup'en) åbner som en ny form... jeg søger en rimelig grundlæggende guide til at lave den nye form, vælge hvilken studerende + returnere valget til den oprindelige form... please help! :-)
Avatar billede hrc Mester
22. februar 2005 - 22:20 #1
Uhh. Hvis du vil lave et nyt program, så pas på med de Paradox-tabeller. De fungerer, men de skide lck-filer og de ødelagte indeks-filer har altid været en plage.

Sådan som jeg læser din opgave så vil du kun søge på by, åbne en ny form der søger, og returnerer med den studerende der er valgt.

Det er et meget simpelt problem du angiver; men der er mange løsninger.

Løsning 1:
Min foretrukne, idet jeg går i stor bue udenom data-aware komponenter som TDBEdit og lignende: Jeg laver en liste, indeholdende TStuderende-objekter. Det er noget med en TObjectList og en TObject nedarving. Desuden kan jeg godt lide den objektorienterede tilgang.

type
  TStudData = class
  private
    fID : integer;
    fNavn : string;
  public
    constructor Create(const aID : integer; const aNavn : string);
    property ID : integer read fID;
    property Navn : string read fNavn;
    procedure FillListItem(aListItem : TListItem);
  end;

  TStudList = class(TObjectList)
  public
    procedure Search(const aPostNr : string);
    property Items[const aIndex : integer] : TStudData read GetStudData; default;
    procedure FillListView(aListView : TListView);
  end;
   
Denne liste indeholder alle de søgte studerende. Bemærk proceduren Search hvor man angiver postnr. Vælger man at overloade denne procedure, kan man have forskellige søgninger.

Listen indeholder også FillListView der stopper de fundne data ind i en TListView (min foretrukne list-komponent)

Ovenstående ligger i en unit for sig og bruges at stud-formen og stud_resultat-formen. Fra din søge-form kreerer en TStudListe, kalder Search, hvorefter du opretter resultat-formen som du fodrer med listen.

En enhed i et TListView hedder TListItem og den har en tag-property som kan bruges til lidt af hvert. Jeg ville gemme listens TStudData på denne, så når jeg havde klikket på en linie (studerende) så havde jeg automatisk det TStudData objekt som skulle sendes tilbage.

Er det forvirrende? Så send mig en email og jeg vil have et eksempel parat i løbet af 20 minutter.

Den anden løsning er at bruge TDBEdit og den slags - den er også lettest, men vil man senere skifte database, så sidder man med håret i postkassen og skal redesigne hele baduljen.
Avatar billede hrc Mester
22. februar 2005 - 23:24 #2
OK, det tog en ½ time, men hvis der er nogen der er interesserede, så drop en email.

I øvrigt så var det ikke TListItems.Tag, men TListItem.Data jeg mente.
Avatar billede homsabu Nybegynder
23. februar 2005 - 09:42 #3
jeg er rimelig ny i delphi, så jeg vil gerne ha' et eksempel hvis du har et!

cazper33 [snabelA] hotmail dot com
Avatar billede roz Nybegynder
24. februar 2005 - 15:08 #4
Jge kender ikke så meget til Paradox databaser så vile lige høre om du kan bruge SQL kommadoer til den? For så er det nemt nok.
Avatar billede homsabu Nybegynder
24. februar 2005 - 15:25 #5
det kan man...

hvad har du af forslag?? :-)
Avatar billede hrc Mester
24. februar 2005 - 15:50 #6
roz: Det eksempel jeg sendte til homsabu er i SQL - og kun SQL.
Avatar billede roz Nybegynder
24. februar 2005 - 23:35 #7
Ja har jeg set men denne side havde stået åben ved mig i en dags tid så have ikke lige set der var kommet nogle svar :P hehe
Avatar billede roz Nybegynder
24. februar 2005 - 23:37 #8
BTW Hrc: Gider du ikke lige kigge her: http://www.eksperten.dk/spm/592558 Har lidt problemer med din kode..
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