Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

500 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

27 april 2024, 12:01:05

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: DBGrid  (gelezen 8052 keer)

0 leden en 1 gast bekijken dit topic.

Offline NLCOMP

  • Forumheld
  • *****
  • Berichten: 14.666
    • NL Computer Forum
DBGrid
« Gepost op: 9 november 2009, 20:10:04 »
Bericht 1 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:Jan101477Datum:14-10-2007
 Aan:AllenMsgID:3592.1
 Onderwerp:DBGridForum:ws-nlcomputer
Hallo,
Ik heb een formulier aan mijn project toegevoegd met daarop een Data control, genaamd Data1, een commandoknop met de naam Command1 en een DBGrid. Dat DBGrid wil ik een naam geven, maar als ik met de rechter muisknop voor Eigenschappen kies, krijg ik de Property Pages met nergens een naam daarin. Daardoor krijg ik als ik op Command1 druk de fout 430 "Class does not support Automation or does not support expected interface". Deze fout krijg ik op statement DBGrid1.DataSource = Data1 in Command1_Click. In Data1 is DatabaseName de betreffende database en RecordSource de te gebruiken tabel. Volgens de documentatie zou nu in het grid de tabelheader moeten verschijnnen met de betreffende kolommen, maar al wat ik krijg is deze fout. Het betreffende formulier gaat hierbij als attachment.
Bijlagen :

frmDBGrid.frm
2KB

frmDBGrid.frm
2KB


Bericht 2 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:14-10-2007
 Aan:Jan101477MsgID:3592.2
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Jan,

>>Dat DBGrid wil ik een naam geven, maar als ik met de rechter muisknop voor Eigenschappen kies, krijg ik de Property Pages met nergens een naam daarin.<<
Dat klopt, daar staat het ook niet. Selecteer in de properties-lijst de DBGrid1 en kies de eigenschap (Name) ipv (Custom). Het werkt hetzelfde als bij alle andere controls.

>>de fout 430 "Class does not support Automation or does not support expected interface". Deze fout krijg ik op statement DBGrid1.DataSource = Data1 in Command1_Click.<<
DBGrid1.DataSource kan nietgewijzigd worden tijdens run-time en moet dus tijdens design-time ingesteld worden.
Met VB6, selecteer in de properties-lijst de DBGrid1 en klik op DataSource. Er verschijnt nu in het instelveld erachter een pijltje omlaag. Klik hierop en selecteer Data1 in de lijst die verschijnt.

Om een andere tabel weer te geven via Command1 kun je het volgende doen:

Private Sub Command1_Click()
   Data1.RecordSource = "tabelnaam"   'kies tabel "tabelnaam"
   Data1.Refresh                      'ververs de gegevens
End Sub

Groeten, Peter

[/center]


Bericht 3 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:Jan101477Datum:14-10-2007
 Aan:PeterMsgID:3592.3
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Peter,
Bedankt voor je reactie. Het opzoeken van de Properties werkt bij DBGrid toch anders dan bij andere controls, zoals bijv. de Data control. Om de naam te kunnen invullen bij de DBGrid moet je rechtsklikken op de vermelding bij Project Explorer om de eigenschappen te krijgen. Bij de data control daarentegen krijg je de eigenschappen, waaronder de naam, als je rechtsklikt op de control zelf. Doe je dat bij de DBGrid dan krijg je niet de eigenschappen, maar de Tabbladen.
De DBGrid heb ik verplaatst van Command1-Click naar Form.Load, maar fout 430 blijft terugkomen en geen tabelvelden te zien in het grid. Dit is ook logisch, want de naam DBGrid 1 is dezelfde als die welke je krijgt door rechtsklikken op de vermelding bij Project Explorer.
De naam was dus al goed, dus de fout bleef. Wat zie ik over het hoofd?


Bericht 4 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:14-10-2007
 Aan:Jan101477MsgID:3592.4
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Jan,
>> verplaatst van Command1-Click naar Form.Load <<
PMFJI, form.load is ook run-time.

Michel Uphoff (NLcomputer)
Homepage



Bericht 5 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:14-10-2007
 Aan:Jan101477MsgID:3592.5
 Onderwerp:DBGridForum:ws-nlcomputer
Namen van controls kun je atijd het beste opgeven via de properties-lijst van het betreffende control. Rechtklikken op een control leverd soms extra instellingen. De naam van een control is altijd instelbaar en dus geen extra instelling.

>>De DBGrid heb ik verplaatst van Command1-Click naar Form.Load, maar fout 430 blijft terugkomen<<
DBGrid1.DataSource MOET tijdens design-time ingesteld worden en wel bij de eigenschappen van DBGrid1. Zie bijlage.
Zoals Michel al opmerkte, Form_Load is ook run-time, dus dat maakt geen verschil.


Peter


Bijlagen :

DBGrid1_properties.JPG
25KB


Bericht 6 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:Jan101477Datum:15-10-2007
 Aan:PeterMsgID:3592.6
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Peter en Michel,
Ondanks dat het grid en de data control de correcte waarden bevatten en de tabel records bevat, krijg ik niets in het grid te zien. De DatabaseName property van Data1 bevat het volledige pad van de database en de RecordSource staat ingesteld op de gebruikte tabel. De property DataSource van DBGrid1 bevat de naam van de data control Data1.
Als ik de toepassing run valt op dat het uiterlijk van het grid wel veranderd is ten opzichte van at design time. Bevat hij at design time alleen een grijze regel en een witte regel met een ster in de linker marge. At run time bevat hij een grijze regel en 3 blanco regels, waarvan de eerste in de linker rand een pijlpunt naar rechts heeft en de derder regel een ster.
Wat kan er nu nog fout zijn? Ik begrijp hier niets van. Overal wordt bevestigd, dat de in de eerste alinea genoemde instellingen voldoende moeten zijn om de gegevens uit de tabel in het grid te krijgen. Nergens wordt gesproken over eventuele beperkingen of extra instellingen.


Bericht 7 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:15-10-2007
 Aan:Jan101477MsgID:3592.7
 Onderwerp:DBGridForum:ws-nlcomputer
Vreemd, Ik heb verder ook niets gewijzigd.
Enkele mogelijkheden die je eens kunt proberen zijn:

a)  Kan het zijn dat een ander programma ook aan de database zit te snuffelen?
b)  De eigenschap Data1.Connect staat op Access 2000; . Klopt dat wel?
c)  Herstart je computer compleet en probeer het nog eens.
d)  Probeer het eens met een ander database-bestand.


Peter



Bericht 8 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:Jan101477Datum:16-10-2007
 Aan:PeterMsgID:3592.8
 Onderwerp:DBGridForum:ws-nlcomputer
Peter,
In Connect staat inderdaad Access 2000;. Ik gebruik ook databases met alleen Access in Connect, maar deze geven hetzelfde resultaat, namelijk lege regels met 1 kolom, maar wel met evenveel regels als er records zijn. Er staat echter niets in.
Ook 2000; achter Connect weghalen geeft hetzelfde resultaat.
Is er geen beter grid dan DBGrid1?
Werkt het grid van ADO ook met oudere databases?


Bericht 9 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:16-10-2007
 Aan:Jan101477MsgID:3592.9
 Onderwerp:DBGridForum:ws-nlcomputer
Ik vroeg het al eerder, lukte het ook niet met een ander mdb bestand?

>>Is er geen beter grid dan DBGrid1? <<
Het DataGrid Control kun je eens proberen. Heb ik geen ervaring mee.
Een voorbeeld vind je HIER.

>>Werkt het grid van ADO ook met oudere databases?<<
Geen idee.


Peter



Bericht 10 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:Jan101477Datum:17-10-2007
 Aan:PeterMsgID:3592.10
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Peter,
Mijn DBGrid probleem is inmiddels opgelost. Je eerste suggestie uit een eerder antwoord was de oplossing. Er bleek inderdaad elders in het programma ook gewerkt te worden met de betreffende data control. Ik heb echter nog één vraag. Volgens de documentatie moet je, als je rechtsklikt op de DBGrid control
een zogenaamd context menu (met Cut, Copy, Delete, Bring To Front, View Code, Align To Grid, Edit, Properties, Retrieve Fields en Clear Fields) krijgen, waarmee je o.a. in UI-modus kunt komen. Bij mij komen er na selecteren van de DBGrid met rechtsklikken echter altijd de Property Pages.
Ik heb op diverse manieren geprobeerd dit context menu te krijgen, maar tevergeefs.
Overigens, hartelijk dank voor je assistentie. Het heeft ook hier weer geholpen.


Bericht 11 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:17-10-2007
 Aan:Jan101477MsgID:3592.11
 Onderwerp:DBGridForum:ws-nlcomputer
>>Er bleek inderdaad elders in het programma ook gewerkt te worden met de betreffende data control.<<
Aha. :-)

>>Bij mij komen er na selecteren van de DBGrid met rechtsklikken echter altijd de Property Pages.<<
Hmm, ik kan me vaag iets herinneren dat ik dat ook eens gezien heb.
De oplossing schiet me echter niet te binnen.


Peter



Bericht 12 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:jvdpeet01Datum:25-03-2008
 Aan:AllenMsgID:3795.1
 Onderwerp:DBGridForum:ws-nlcomputer
Ik heb een project  met toepassing van een data control en een DBGrid. Zoals voorgeschreven is de Datasource van DBGrid de data control en de datacontrol heeft de correcte databasenaam en als Recordsource de juiste tabel. 
Als ik het grid probeer te benaderen is er niets in de kolommen en rijen van het grid te zien, terwijl er in de tabel wel records zitten. Wel zijn de lege rijen te zien, maar alleen de eerste twee kolommen en de rijen daarvan. Ook kan ik op de tabel normaal bewerkingen uitvoeren, dus de tabel is wel te vinden.  In een ander project gebruik ik precies hetzelfde en daar werkt het wel.  Ik heb gecontroleerd of ik verschillen kan vinden tussen de twee projecten t.a.v. het gridgebruik, maar kan die niet vinden.
Wat kan hier mis zijn?  Ik begrijp niet hoe dit kan. In het andere project werkt het perfect en ik kan niet vinden wat daar ten aanzien van de DBGrid anders is dan in het project waar hetzellfde niet werkt. Ik weet niet waar ik naar zoeken moet. Heeft iemand een idee?  


Bericht 13 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:25-03-2008
 Aan:jvdpeet01MsgID:3795.2
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi jvdpeet,

>>Als ik het grid probeer te benaderen is er niets in de kolommen en rijen van het grid te zien, terwijl er in de tabel wel records zitten.<<
Ik neem aan dat je Visual Basic 5 of 6 gebruikt.
Het enigste wat aangepast moet worden om de DBGrid te koppelen is de eigenschap DBGrid.DataSource.
Verwijder eens in je project de niet-werkende DBGrid, voeg dan een nieuwe DBGrid toe, pas eventueel de DBGRid.Name aan en koppel met de eigenschap DBGrid.DataSource je datacontrol.
Werkt het nu wel?

Wordt er ergens in je programma-code nog wat gedaan met de datacontrol of DBGrid, schakel die code dan tijdelijk uit.


groeten, Peter





Bericht 14 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:jvdpeet01Datum:26-03-2008
 Aan:PeterMsgID:3795.3
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Peter,
Wederom ben je de redder in de nood. Ik heb het grid verwijderd en vervangen door een  nieuwe en nu werkt het prima. Hetzelfde gedaan met een ander grid dat niet goed werkte. Heb je enig idee wat hier voor verklaring achter zit. Er moet toch een oorzaak geweest zijn. Ik zie namelijk geen verschil tussen de oude en de nieuwe grid.   Maar hoe het ook zit, het werkte. Hartelijk dank voor je hulp.  
 


Bericht 15 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:jvdpeet01Datum:26-03-2008
 Aan:PeterMsgID:3795.4
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi Peter,
Ik heb een oorzaak gevonden voor het niet vermelden van de tabelrecords in het grid. Ik heb in tweede instantie de kolomnamen van de tabel die in het Nederlands waren Engelse namen gegeven via de eigenschappen in de tabbladen. Het gekke daarin was dat er ondanks meerdere kolommen er maar twee een andere naam gegeven konden worden. De andere kolommen werden niet weergegeven in tabblad kolommen. Na het veranderen van deze twee kolomnamen werd de inhoud van de tabel niet meer in het grid weergegeven.
Heb je enig idee hoe ik dit kan oplossen en hoe ik alle kolommen een andere naam kan geven zonder de tabelinhoud te verliezen?
 


Bericht 16 van 16

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:26-03-2008
 Aan:jvdpeet01MsgID:3795.5
 Onderwerp:DBGridForum:ws-nlcomputer
Hoi jvdpeet,

>>Het gekke daarin was dat er ondanks meerdere kolommen er maar twee een andere naam gegeven konden worden. <<
Dat klopt. Als je een DBgrid toevoegd, krijgt die standaard 2 kolommen. Om 1 of meerdere kolommen toe te voegen met de ontwikkel omgeving (VB's  IDE), doe je hetvolgende.
Rechtsklik op de DBGrid.
Er verschijnt nu een menu. Klik dan op menukeuze Edit.
Het menu verdwijnt dan weer. Rechtsklik nogmaals in de DBGrid
Het menu wat nu verschijnt heeft een andere layout en bevat o.a 'Cut', 'Copy', 'Insert' en  'Append'.
Hiermee kan je het aantal kolommen aanpassen.
Om een kolom weer te verwijderen moet je eerst de kolom selecteren, daar rechtsklikken en 'Delete' kiezen.

Om alle kolom gegevens te resetten, rechtsklik en kies ''Clear Fields'.


groeten, Peter