Toon posts:

[Delphi+database] Antwoord in Search klopt niet???

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil in de database velden kunnen wijzigen, toevoegen, en verwijderen, jawel. Dus niet direct in de database met b.v. DataAware componenten, daarom moet dat met Edit-boxjes. Maar doe knopjes werken niet helemaal lekker.

Ik krijg steeds een exceptie (80040E14)op de volgende manier:
code:
1
2
3
4
5
6
7
procedure TForm1.K_WijzigenClick(Sender: TObject);
begin
      AdoTable1.Append;
      AdoTable1.FieldByName('NaamA').AsString := Edit1.Text;
      AdoTable1.Post;

end;

Ik krijg het wel zonder Exceptie:
code:
1
2
      AdoTable1.Edit;
      AdoTable1.FieldByName('NaamA').AsString := Edit1.Text;

Maar dan wil 'ie niet direct posten. Pas na weer opnieuw text invoeren, en op wijzigen klikken, neemt ie hem echt mee. Dus Post erbij:
code:
1
2
3
      AdoTable1.Edit;
      AdoTable1.FieldByName('NaamA').AsString := Edit1.Text;
      AdoTable1.Post;

Maar dan krijg ik weer een exceptie :(

Ik heb geen idee hoe ik het moet oplossen. Ik heb het met Assign geprobeerd, AssignValue, Edit/Append etc.

Ik baal ervan. De oplossing moet zo simpel zijn. BVD Help!

Acties:
  • 0 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Ik gebruik zoiets:
code:
1
2
3
4
5
6
7
       T:=TTable.Create(nil);
       T.DatabaseName:=DataDir;
       T.TableName:=TabelNaam;
       T.Active:=True;
       T.AppendRecord([Idx,Naam]);
       T.Active:=False;
       T.Destroy;

Trouwens, jouw idee met Append; Edit; Post lijkt toch niet zo gek.. Vreemd dat dat niet werkt.

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

Verwijderd

zal je een hint geven check eerst of je veld al niet in edit mode staat !!!!!

als ie al in edit staat dan moet je niet nog eens edit aanroepen want dan krijg je exceptions

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Na flink lopen vogelen met wat ShowMessages ben ik eruit dat de exceptie wordt veroorzaakt door een dubbele aanroep van Post. Stiekem zit in Edit CheckBrowseMode, en daarin if .Modified=TRUE, .Post.

Daar ging erg veel mis. Omdat ik zat te experimenteren van het nabootsen van Edit, waarna ik nog een keertje .Post doe. Hij ging dus steeds op zijn plaat door de 2e .Post.

Maar nu heb ik weer hetzelfde probleem als ik de waarde in een textveld verander en deze wil wegschrijven naar de Tabel:
code:
1
2
3
4
ButtonWijzigenClick:
.Edit
.post
end

Dan doet ie namelijk niks. Doe ik iets verkeerd/moet ik in een ander event zitten pielen dan de OnButtonClick?

Acties:
  • 0 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Op zaterdag 07 juli 2001 19:02 schreef Night_Reveller het volgende:
code:
1
2
3
4
ButtonWijzigenClick:
.Edit
.post
end
??
Ben je de actie tussen de .edit en de .post vergeten, of doe je daar echt niks in je code? Daar hoort natuurlijk wel iets van Table.FieldByName('huppel').AsInteger:=4;

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja oke, dat bedoel ik ook.
code:
1
2
3
.Edit
FieldByName('NaamA').AsString := Edit1.text;
.Post

Maar dat werkt dus niet. Ik heb een vermoeden dat het niet kan omdat het Edit-veld geen DataAware component is, en dat ie daarom niets wil updaten.

Heeft iemand anders een idee hoe je een DataAware veld kan nabootsen als een Edit-veld, met knopjes Toevoegen, Wijzigen en Verwijderen? Bovenstaand werkt om een een of andere reden niet (Die reden zou ik ook graag wel willen weten).

Acties:
  • 0 Henk 'm!

Verwijderd

Op zaterdag 07 juli 2001 19:02 schreef Night_Reveller het volgende:
Na flink lopen vogelen met wat ShowMessages ben ik eruit dat de exceptie wordt veroorzaakt door een dubbele aanroep van Post. Stiekem zit in Edit CheckBrowseMode, en daarin if .Modified=TRUE, .Post.
CheckBrowseMode doet alleen maar een Post wanneer de State dsEdit of dsInsert is, en dat is 'ie nog niet op 't moment dat je Edit aanroept.
Sterker nog, als 'ie dat wel is, doet Edit helemaal niks.

Acties:
  • 0 Henk 'm!

Verwijderd

Op zondag 08 juli 2001 18:59 schreef Night_Reveller het volgende:
Ik heb een vermoeden dat het niet kan omdat het Edit-veld geen DataAware component is, en dat ie daarom niets wil updaten.
Dat staat er los van, want in je post event zet je zelf de waarde van dat edit control in 't field, en hoeft dat control dus niet DataAware te zijn.

Ik gebruik nooit ADOTables (wel ADOQueries, maar nooit met RequestLive op True), maar jouw manier zou gewoon moeten werken.
Misschien een nieuwe versie van Microsofts MDAC installeren??? (http://www.microsoft.com/data/download.htm)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg wat ik ook probeer hem niet door post heen. Ik krijg het veld nu wel de waarde die ik het wil geven, maar Modified blijft waar, en alleen .Post (of een afgeleide als CheckbrowseMode) kan hem van dsEdit afhalen. En dat moet, anders komt ie niet in dsBrowse, en mag ik daarna dus niet meer scrollen door de DB.

Weet iemand een site waar ik de bugcodes kan laten checken, want dit is gewoon niet goed. Of heeft iemand een lijst met known-bugs en work-arounds?

Acties:
  • 0 Henk 'm!

Verwijderd

Net even geprobeerd met D5, MDAC 2.6 SP1 en een connectie met een MSSQL 7 server onder Win2K Server, en jouw Edit / set field values / Post manier werkte gewoon.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ga maar meteen SQL Server SP1 en de nieuwe MDAC gedownloaden, misschien zit daar iets leuks in. Misschien zit er een verschilletje in SQL 7.0 en 2000 (die gebruik ik).
Ik neem aan dat jij ook ADO hebt geprobeert?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmmm. Ik heb net een nieuw project aangemaakt en hetzelfde geintje vereenvoudigd uitgevoerd. Nou werkt het GVD wel.

FF een potje "Zoek de verschillen" spelen :P
Pagina: 1