[C++ Builder] Access Violation in module 'vcldb35.bpl'

Pagina: 1
Acties:

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Ik zit met een probleem, ik probeer gegevens in de database te schrijven en dit wil niet lukken.

Ik weet niet waarom omdat hij elders in het programma alles perfect doet maar hier alleen niet.

Het is een tabel die het detail is van een andere tabel. Beide tabellen staan op active en daarnaast kan ik ze ook wel bekijken in het programma alleen bij 1 tabel (het detail) kan ik niets invullen..

code:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  
  if (BestelForm->Opslaan)
  {
    ShowMessage("Overnemen artikelen");
    DataModule9->Bestel->First();
    if (!DataModule9->Bestel->Eof)
    {
      do
      {
        DBNavigator1->BtnClick(nbInsert);
        DataModule9->SubArt->FieldByName("HoofdArt")->AsInteger = DataModule9
          ->Artikelen->FieldByName("RecNo")->AsInteger;
        DataModule9->SubArt->FieldByName("Art_ID")->AsInteger = DataModule9
          ->Bestel->FieldByName("Artikel_ID")->AsInteger;
        DataModule9->SubArt->FieldByName("Percentage")->AsString = DataModule9
          ->Bestel->FieldByName("Aantal")->AsString;
        DBNavigator1->BtnClick(nbPost);

        DataModule9->Bestel->Next();
      }
      while(!DataModule9->Bestel->Eof);
    }
  }


Ik krijg de melding zoals in de titel.

Acces Violation at address 4170c8da in module 'vcldb35.bpl'

Wat kan ik hier aan doen...

[ Voor 10% gewijzigd door .oisyn op 29-04-2004 14:04 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:56

.oisyn

Moderator Devschuur®

Demotivational Speaker

C++ code doe je in [code=c++]...[/code] tags ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Ik ben het probleem in C++ Builder niet tegengekomen, maar in Delphi wel. Daar kwam het juist doordat ik de tabel in design time op active had gezet, terwijl dat tijdens runtime moest. Probeer dat eens anders. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Ik heb geen oplossing voor je probleem, maar waarom gebruik je geen while( !eof() ) lus, het scheelt je een if instructie ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Ik zou er is een debugger aanhangen, die kan je precies vertellen waar die access violation gebeurt.

Of ja dit kan je natuurlijk al gedaan hebben omdat je weet in welk stukje code het gebeurt ;) Welke line precies?

[ Voor 37% gewijzigd door Radiant op 29-04-2004 14:26 ]


  • schoene
  • Registratie: Maart 2003
  • Laatst online: 22-05 12:29
Is DataModule9->SubArt wel Open?

Waarom gebruik je DBNavigator1->BtnClick(nbInsert); om te inserten (idem voor de Post):

doe dit rechtstreeks via DataModule9->SubArt->Insert (); en DataModule9->SubArt->Post ();

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Regel 9 gaat goed (de insert)

Regel 10 gaat fout daar komt hij met de access violation.

JW

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 22-05 12:29
C++:
1
2
DataModule9->SubArt->FieldByName("HoofdArt")->AsInteger = 
    DataModule9->Artikelen->FieldByName("RecNo")->AsInteger;


Geen id of dit de bedoeling is, maar je gebruikt hier plots een andere tabel: Artikelen.

Mogelijkheden waar ik aan denk:
1) je wil niet de tabel Artikelen gebruiken maar de tabel Bestel
2) Artikelen is niet Open
3) HoofdArt bestaat niet als veld in SubArt
4) RecNo bestaat niet als veld bij Artikelen

Welk type zijn SubArt, Artikelen,... eigenlijk. dat is ook handig om weten: TQuery, TTable, TAdoQuery,...

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Mijn collega heeft het gevonden.

Het bleek dat de fysieke tabel kopot was, ik had al wel deze geprobeert te herstellen maar dit werkte niet. Een nieuwe tabel maken met dezelfde velden echter wel :D

JW

PS bedankt voor de hulp.
Pagina: 1