Results 1 to 9 of 9

Thread: DBGrid koppelen aan datasource

  1. #1
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352

    DBGrid koppelen aan datasource

    In navolging van dit topic wil ik verder gaan waar ik ben gestopt.
    Nu wil ik een dbgrid koppelen aan de datasource, maar dat lukt mij alleen via de object inspector.
    Ik krijg dan netjes de database binnen de dbgrid.
    Ik neem aan dat dit ook via code kan, alleen kan ik er op een één of andere manier niet achter komen hoe ik dit voor elkaar moet krijgen.

    Alvast bedank voor de hulp.
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  2. #2
    Werkt dit niet??
    Code:
    DBGrid1.Datasource := Datasource1;

  3. #3
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Helaas maar als ik dat invoer, krijg ik de melding "Error: Identifier not found "DataSource1" "
    Nu heb ik de de naam ongewijzigd gelaten, dus neer zetten voorlopig klaar, en de Datamodule is aan de uses list toegevoegd, dus in theorie zou deze gewoon gevonden moeten worden lijkt mij.
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  4. #4
    Nee, je datamodule-object heeft een naam: default is dit DataModule1.

    Dus als je TDatasource op die datamodule Datasource1 heet dan moet je dit doen:

    Code:
    uses dmUnit1 { of de naam van je datamodule-unit };
    ..
    DBGrid1.Datasource := DataModule1.Datasource1;

  5. #5
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Geweldig Rik, het werkt, niet direct de eerste keer, want ik was zo bij de hand om dit te plaatsen in "Form create", daar uit kwam een niets zeggende melding uit "SIG bla bla bla".
    Veel over zitten lezen, tot ik wakker werd en bij mezelf dacht nee Anton, niet in form create, maar is formshow.

    Toch nog een klein vraagje, waarschijnlijk gaat het ook zo met een DBEdit veld, maar hoe koppel ik een veld bijvoorbeeld Adres aan een DBEedit.

    procedure TForm1.FormShow(Sender: TObject);
    begin
    DBNav.DataSource := DataModule1.DataSource1;
    DBGrid1.DataSource := DataModule1.DataSource1;
    DBedit1.DataSource := Datamodule1.DataSource1;
    DBEdit1.DataField := hierkomiknietuit.mogelijkiets;
    end;
    Oplossing al gevonden

    DBEdit1.DataSource:=Datasource1;
    DBEdit2.DataSource:=Datasource1;
    DBEdit3.DataSource:=Datasource1;
    DBEdit4.DataSource:=Datasource1;

    DBEdit1.DataField:='StudentID';
    DBEdit2.DataField:='First';
    DBEdit3.DataField:='Second';
    DBEdit4.DataField:='Form';


    Dank je wel voor de medewerking.
    Last edited by AntonSteen; 16-Aug-15 at 10:50. Reason: DBEdit toegevoed
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  6. #6
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Waarom dit in code doen als je al de velden kan koppelen in de de designer.
    Gewoon in je properties de datasource en datafield invoeren. Vroeger kon dat ook, maar dan had je hinder dat het veld niet gevonden kon worden. Tegenwoordig is het transparant.
    Delphi is great. Lazarus is more powerfull

  7. #7
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    John ik doe dit in de code juist omdat het voor mij een leer proces is, maar ik ben het met je eens, via de designer gaat het allemaal een stuk gemakkelijker en sneller, maar dan leren we weer vele malen minder :-)
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  8. #8
    Quote Originally Posted by AntonSteen View Post
    ... niet direct de eerste keer, want ik was zo bij de hand om dit te plaatsen in "Form create", daar uit kwam een niets zeggende melding uit "SIG bla bla bla".
    Veel over zitten lezen, tot ik wakker werd en bij mezelf dacht nee Anton, niet in form create, maar is formshow.
    Nog even over de FormShow versus de FormCreate.

    Je moet jouw code gewoon in de FormCreate kunnen zetten hoor. Ik zou dit niet in de FormShow doen want die kan tijdens de duur van je programma meerdere keren uitgevoerd worden.

    De reden dat jij echter een SIGSEGV krijgt kan zijn dat de aanmaakvolgorde van je TForm en je TDataModule niet goed is. Zorg er altijd voor dat je TDataModule EERST aangemaakt wordt. Dan bestaat die al als je TForm.FormCreate uitgevoerd wordt. Je kunt de volgorde controleren en aanpassen in Project>Project Opties>Forms. Daar staat alle Forms/Modules die automatisch aangemaakt worden en je DataModule moet je dus naar boven schuiven. Daarna kun je dus jouw code in de FormCreate van je Form zetten die daaronder staat.

  9. #9
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Rik, je bent geweldig, wederom heb je weer gelijk.
    Ik kan het nu inderdaad gewoon compileren zonder foutmelding, ook buiten lazarus om kan hij ook worden geopend.

    Op mijn test laptop draait hij ook, en in een virtuele machine ook, geweldig, nu verder uitbreiden.
    Mijn dank is enorm groot
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •