[Delphi7] aantal vraagjes over linken

Pagina: 1
Acties:
  • 33 views sinds 30-01-2008

  • cool0
  • Registratie: Februari 2001
  • Laatst online: 19-05 12:23
Ik moet voor school een project opdracht maken in Delphi.
De Opdracht houd als volgt in.

Klant komt bij loket en wilt naar de efteling de medewerkster selecteer de bestemming en de vertrekdata worden weergegeven. Vervolgens word een bepaalde vertrek data die de klant wenst geselecteer + het aantal kaarten (per bestemming mag er max 46 kaarten verkocht worden. Het aantal gewenste kaarten word ingevoerd en de totaal prijs is te zien. Vervolgens druk de medewerkster op een knop en de bestelling word in de database gekopieerd.

Dit is vrij simpel maar niet voor mij.

Ik ben begonnen en heb tot zover dat mijn Combobox allebestemmingen weergeeft die in de database staan.

Nu is de bedoeling dat wanneer ik een bestemming selecteer in mijn Listbox alle vertrek data weer geven worden inclusief het aantal beschikbare ritten.

Wanneer ik dan op die datum klik ik het aantal kaarten invoer wat de klant wilt hebben en dat ik dan de bestelling bevestig en alles word bij gewerkt in de database.

de extra editbox waar dus de totaal prijs komt te staan is niet van toepassing voor de verwerking alleen voor de medewerkster dat ze kan afrekenen.

Hier staat de database waar het omgaat.

http://med.hro.nl/kuiah/BIO810/RDT.mdb

dit is wat ik grafisch tot nu toe heb gemaakt.

Afbeeldingslocatie: http://glitch.demon.nl/delphi.jpg

Is er iemand die mij hierbij kan helpen?

Ik vrees niet de man die 10.000 trappen heeft beoefend maar de man die 1 trap 10.000 keer heeft geoefend


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:52

Creepy

Tactical Espionage Splatterer

Wat heb je zelf al geprobeerd? Wat lukte er niet? Kreeg je foutmeldingen? Zo ja, welke?

offtopic:
Mijn glazen bol is stuk....

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • cool0
  • Registratie: Februari 2001
  • Laatst online: 19-05 12:23
ik heb zelf geprobeerd dit te doen zodat de data in de listbox kom van die bestemming


code:
1
2
3
4
5
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ADOTable1.Seek(ComboBox1.Text, soFirstEQ);
  ListBox1.Text := ADOTable2.FieldByName('Datum').AsString;
 end;


Echter geeft die dan een fout op regel
ListBox1.Text := ADOTable2.FieldByName('Datum').AsString;

maar ik weet niet wat ik fout doe

Ik vrees niet de man die 10.000 trappen heeft beoefend maar de man die 1 trap 10.000 keer heeft geoefend


  • cool0
  • Registratie: Februari 2001
  • Laatst online: 19-05 12:23
Niemand die mij kan helpen hiermee? Word er echt gek van

Modbreak:
Doe eens niet zo snel kicken? :/

[ Voor 41% gewijzigd door gorgi_19 op 13-06-2004 14:54 ]

Ik vrees niet de man die 10.000 trappen heeft beoefend maar de man die 1 trap 10.000 keer heeft geoefend


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

cool0 schreef op 13 juni 2004 @ 13:53:
ik heb zelf geprobeerd dit te doen zodat de data in de listbox kom van die bestemming


code:
1
2
3
4
5
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ADOTable1.Seek(ComboBox1.Text, soFirstEQ);
  ListBox1.Text := ADOTable2.FieldByName('Datum').AsString;
 end;


Echter geeft die dan een fout op regel
ListBox1.Text := ADOTable2.FieldByName('Datum').AsString;

maar ik weet niet wat ik fout doe
Misschien kun je vertellen welke foutmelding je krijgt?

If you are not wiping out you are nog pushing enough...


  • cool0
  • Registratie: Februari 2001
  • Laatst online: 19-05 12:23
De foutmelding die ik krijg is dat die de regel rood maakt dus er zit een fout in de regel.

Wat dus de bedoeling is dat wanneer ik me bestemming kies bv Efteling
dat die de beschikbare data in de listbox zet.

Ik vrees niet de man die 10.000 trappen heeft beoefend maar de man die 1 trap 10.000 keer heeft geoefend


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:49

gorgi_19

Kruimeltjes zijn weer op :9

Cool0:
Dit topic loopt helemaal niet lekker, voornamelijk omdat je loopt te kicken en men gewoon informatie mist.

Zie P&W FAQ - De "quickstart" ; pas je post aan en geef de ontbrekende informatie die in deze richtlijn staat. Doe je dit niet, dan kan ik het topic net zo goed dicht doen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

cool0 schreef op 13 juni 2004 @ 13:53:
ik heb zelf geprobeerd dit te doen zodat de data in de listbox kom van die bestemming


code:
1
2
3
4
5
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ADOTable1.Seek(ComboBox1.Text, soFirstEQ);
  ListBox1.Text := ADOTable2.FieldByName('Datum').AsString;
 end;


Echter geeft die dan een fout op regel
ListBox1.Text := ADOTable2.FieldByName('Datum').AsString;

maar ik weet niet wat ik fout doe
Umm...je zoekt in ADOTable1 en je wilt een resultaat uit ADOTable2 weergeven?


Verder raad ik je aan om met ADOQuery te werken, zo kan je gewoon een "SELECT * FROM ...WHERE dit=dat" doen :) (maar als het met ADOTable ook gewoon werkt, niet moeilijk gaan doen hoor ;)).

[ Voor 11% gewijzigd door Verwijderd op 13-06-2004 15:14 ]


  • cool0
  • Registratie: Februari 2001
  • Laatst online: 19-05 12:23
Alleen maar loopt te kicken ik kickte hem 1 keer! en na 1 uur stressen en me haren uit me kop trekken vond ik dat het wel tijd was om dat te doen. Tevens als je de tekst lees dan weet je precies wat de bedoeling is.

Ik vrees niet de man die 10.000 trappen heeft beoefend maar de man die 1 trap 10.000 keer heeft geoefend


Verwijderd

cool0 schreef op 13 juni 2004 @ 15:03:
Alleen maar loopt te kicken ik kickte hem 1 keer! en na 1 uur stressen en me haren uit me kop trekken vond ik dat het wel tijd was om dat te doen. Tevens als je de tekst lees dan weet je precies wat de bedoeling is.
Het maakt niet uit hoe hard je stresst, het is hier op GoT de regel dat je niet binnen 24 uur kickt. Geen uitzonderingen (heb je al wat met mijn vorige post gedaan trouwens?).

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:49

gorgi_19

Kruimeltjes zijn weer op :9

cool0 schreef op 13 juni 2004 @ 15:03:
Alleen maar loopt te kicken ik kickte hem 1 keer! en na 1 uur stressen en me haren uit me kop trekken vond ik dat het wel tijd was om dat te doen. Tevens als je de tekst lees dan weet je precies wat de bedoeling is.
24 uur is de richtlijn, en dat is die altijd al geweest. Verdere discussie over het beleid mag je via mail of in LA-doen.
Over die verduidelijking: we hebben een quickstart als richtlijn; 2 posters misten iig informatie. Kijk dan ook niet vreemd op dat niemand / weinig mensen reageren.
Jij hebt een probleem, niet zij. Wees dan ook niet scheutig met informatie.

Nu weer ontopic.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-05 23:27

Tomatoman

Fulltime prutser

Volgens mij probeer je een master-detailrelatie te maken. Kijkend naar de databasestructuur probeer je met de combobox uit de tabel Dagtrip een record met een bepaalde DagtripID te selecteren. Aan de hand van de geselecteerde DagtripID wil je uit de tabel Rit alle ritten selecteren met die DagtripID. Die ritten moeten in een lijstje met beschikbare vertrekdata komen. Je probleem is dat je niet weet hoe je de juiste ritten moet selecteren en in het lijstje zetten. Begrijp ik dat goed?

Een goede grap mag vrienden kosten.


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-05 23:27

Tomatoman

Fulltime prutser

Ervan uitgaande dat dat inderdaad je probleem is, volgt hier je stappenplan: je bouwt een master-detailrelatie tussen de masterrecords (in tabel Dagtrip) en de detailrecords (in tabel Rit). Zodra je een andere masterrecord selecteert, moeten alle detailrecords opnieuw worden bepaald.


Eerst zorg je dat de combobox gevuld wordt.
  1. Plaats een TADOConnection op je form (of wat netter: in een aparte datamodule) en configureer hem zodanig dat je een verbinding met de database hebt. Dat doe je via de ConnectionString property. De Connected property zet je op True (geen wachtwoord nodig).
  2. Plaats een TADODataSet (of TADOTable of TADOQuery) in de datamodule, koppel hem via de Connection property aan de TADOConnection en zet een query in de CommandText property. Dat wordt zoiets als
    code:
    1
    2
    
    SELECT DagtripID, Bestemming, Prijs
    FROM Dagtrip

    Voor TADOTable hoef je geen SQL query te schrijven, maar kun je gewoon de juiste tabel selecteren.
  3. Zet een TDataSource in de datamodule en koppel hem aan de TADODataSet.
  4. Zet een TDBLookupComboBox op je form (geen TDBComboBox of TComboBox!) en koppel hem aan de TDataSource via de ListSource property. Selecteer DagtripID in de KeyField property (dat is het veld waarop wordt gezocht) en Bestemming in de ListField property (dat is het veld dat wordt weergegeven in het lijstje).
Nu kun je alle bestemmingen selecteren.


Dan maak je de lijst met vertrektijden.
  1. Zet een tweede TADODataSet in de datamodule. Selecteer als Connection de TADOConnection die je hiervoor al had gemaakt.
  2. Configureer de CommandText property:
    code:
    1
    2
    
    SELECT DagtripID, Datum, Ritnr, Chauffeur, Boekingen
    FROM Rit

    Natuurlijk zoals gewoonlijk weer de Active property op True zetten.
  3. Zet een TDataSource in de datamodule en koppel hem aan de zojuist gemaakte TADODataSet.
  4. Zet een TDBGrid op het form en koppel hem aan de zojuist gemaakte TDataSource.
Nu zie je dat er inderdaad een hoop records tevoorschijn komen, maar van alle bestemmingen tegelijk. Dat wil je natuurlijk niet, want je zoekt alleen de records voor de huidige bestemming. Daarom selecteer je in de TADODataSet voor de ritten een waarde voor de DataSource property, namelijk de TDataSource die aan de dagtrips is gekoppeld. Hier haalt het programma voortaan vandaan welke dagtrip is geselecteerd.

Je moet natuurlijk nog wel aan het programma uitleggen op welke veldnaam het verband moet worden gelegd tussen de dagtrip en de ritten. Dat doe je door in de MasterFields property van de TADODataSet (van de ritten) op de ... button te drukken. Er verschijnt nu een dialoogvenster waar je in zowel Master fields als Detail fields het veld DagtripID selecteert. Klik op de Add button, zodat bij de Joined fields de relatie wordt toegevoegd. Klaar! Nu werkt alles naar behoren. Als je het programma draait en een andere bestemming kiest, verschijnen automatisch de bijbehorende ritgegevens.

______

Het is trouwens hoogst ongebruikelijk dat je een tekst gebruikt voor een ID-veld zoals DagtripID. Het is veel logischer om dat in je database te veranderen in een veld van het type autonummering.

Een goede grap mag vrienden kosten.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:52

Creepy

Tactical Espionage Splatterer

cool0 schreef op 13 juni 2004 @ 14:56:
De foutmelding die ik krijg is dat die de regel rood maakt dus er zit een fout in de regel.
Delphi zelf geef daarnaast ook nog de foutmelding zelf. Dat de regel in je edit window rood wordt is alleen iets van "let op!". Je zult in je "messages" window (meestal onderaan je edit window) de daadwerkelijke foutmelding zien.

[ Voor 4% gewijzigd door Creepy op 14-06-2004 08:49 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • cool0
  • Registratie: Februari 2001
  • Laatst online: 19-05 12:23
Dat werkt inderdaad zoals het zou moeten vele malen dank en makkelijker zoals het op school is verteld. Echter kom ik nu bij de volgende vraag.

Hoe bestel ik bv extra kaartjes dit door een Edit te maken waar ik een waarden invoer. Echter mag er per rit niet meer dan 46 kaartjes verkocht worden?

Dus als volgt ik voer in 4 kaartjes kaartjes druk op OK programma verwerkt bestelling en geeft een melding bv bestelling voltooid als er voldoende ritten beschikbaar zijn. Gaat het aantal kaartjes over de 46 heen dan komt er een fout melding.

Hoe doe ik dit?

De prijs per kaartje doe ik waarschijnlijk door weer een TBGrid te maken en via Datasets alleen het veld prijs te selecteren.

Ik vrees niet de man die 10.000 trappen heeft beoefend maar de man die 1 trap 10.000 keer heeft geoefend


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:49

gorgi_19

Kruimeltjes zijn weer op :9

Dit begint nu wel een heel erg een neem mij aan het handje mee topic te worden. :) Hierboven heb je een perfecte functionele beschrijving gegeven van wat het moet. :)
Ik zie echter geen enkel probeersel van je, geen enkele eigen poging in je laatste probleem; het complete technische gedeelte mist. :)
De prijs per kaartje doe ik waarschijnlijk door weer een TBGrid te maken en via Datasets alleen het veld prijs te selecteren.
Probeer het uit, lijkt me? Wat heb je geprobeerd, wat zijn je bevindingen?

Anyway, deze gaat dicht. Ik blijf niet naar de Quickstart wijzen. :)

[ Voor 5% gewijzigd door gorgi_19 op 14-06-2004 15:26 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.