Autor Beitrag
Lolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24

Win XP, 2003
Turbo Delphi Pro
BeitragVerfasst: Mi 24.09.08 13:32 
Hallo zusammen,

ich zweifle langsam an mir selbst! Ich versuche nur, eine ADO-Tabelle in den Edit-Modus zu bringen und etwas darin zu schreiben.

Hier der Text:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
procedure TKasseForm.EingabeFeldKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  Text: String;
begin
  if (Key = VK_F10) OR (Key = VK_F12) then
  begin
    if KasseTabelle.Locate('BonNr',BonNr,[]) then
      Beep();     //Zur Kontrolle
    case KasseTabelle.State of
      dsBrowse:       Text := 'Browse';
      dsInactive:     Text := 'Inactive';
      dsEdit:         Text := 'Edit';
      dsInsert:       Text := 'Insert';
      dsSetKey:       Text := 'SetKey';
      dsCalcFields:   Text := 'CalcFields';
      dsFilter:       Text := 'Filter';
      dsNewValue:     Text := 'NewValue';
      dsOldValue:     Text := 'OldValue';
      dsCurValue:     Text := 'CurValue';
      dsBlockRead:    Text := 'BlockRead';
      dsInternalCalc: Text := 'InternalCalc';
      dsOpening:      Text := 'Opening';
    end;
    MessageDlg('Status: ds' + Text,mtInformation,[mbOK],0);
    KasseTabelle.Edit;
    if Key = VK_F10 then
    begin
      KasseTabelle['ZahlungsArt'] := 'Bar';


Ich prüfe also, welchen Status die Tabelle hat und bekomme dsBrowse als Antwort. Lass ich das dann laufen, kommt als Fehlermeldung: "... Klasse EDatabaseError mit der Meldung 'KasseTabelle: Datenmenge weder im Editier- noch im Einfügemodus' aufgetreten."

Was läuft da schief? (Verzweifel!)

Vielen Dank für eure Hilfe!

Lolo

_________________
Du kannst so alt werden wie eine Kuh, Du lernst immer noch dazu!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.09.08 13:41 
musst halt den datensatz in den editier/einfügemodus versetzen. wenn state = dsbrowse, kann nur angezeigt werden. z.b. mit ds.edit oder ds.append den status verändern.
Lolo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24

Win XP, 2003
Turbo Delphi Pro
BeitragVerfasst: Mi 24.09.08 14:26 
Das tu ich doch, siehe Zeile 25! Dort steht:
ausblenden Delphi-Quelltext
1:
KasseTabelle.Edit;					


Noch mal zur Klarstellung: Vor dem Edit befindet sich die Tabelle im dsBrowse, nach dem Edit offensichtlich immer noch...

Lolo

_________________
Du kannst so alt werden wie eine Kuh, Du lernst immer noch dazu!
mikhal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109

Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
BeitragVerfasst: Mi 24.09.08 16:08 
Um welche Datenbank und um welchen OLE DB Provider handelt es sich bei deinem Projekt?

Grüße
Mikhal

_________________
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
Lolo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24

Win XP, 2003
Turbo Delphi Pro
BeitragVerfasst: Mi 24.09.08 16:44 
Hallo Mikhal,

es handelt sich um MS SQL-Server 2005, aktuelles SP.

Provider: SQLOLEDB.1

Das seltsame ist, dass ich an anderer Stelle im Programm einwandfrei auf die Tabelle zugreifen kann.

Gruß
Lolo

_________________
Du kannst so alt werden wie eine Kuh, Du lernst immer noch dazu!
mikhal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 109

Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
BeitragVerfasst: Fr 26.09.08 12:47 
Bist du dir sicher, dass du auf diese Datenbank-Tabelle nicht bereits einen sperrenden Zugriff in deinem Programm hast (Append, Edit), bevor du mit der neuen TAdoTable auf die Datenbank-Tabelle zugreifst?

Grüße
Michael

_________________
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 26.09.08 12:56 
Wenn Du datensensitive Eingabefelder verwendest (TDBEdit etc.), erübrigt sich das Problem. Sobald Du tippst, geht das TDataset automatisch in den Edit-Modus. Du benötigst nur noch einen TDBNavigator bzw. Buttons, die diese Funktionalität bereitstellen (i.a. Append, Insert, Post, Cancel).

Funktionalitäten über Funktionstasten implementiere ich über (unsichtbare) Menüitems, denen ich einen Shortcut zugewiesen habe. Das löst dein Problem zwar nicht, könnte es aber umschiffen. Du kannst -glaube ich- auch TActions nehmen, nur weiss ich aus dem Kopf nicht, ob die Zuweisung eines 'Shortcuts' direkte Auswirkungen hat (ob dann also die Action auch ausgeführt wird).

In jedem Fall prüfst Du, ob die Tabelle im Browse-Modus ist, änderst das ggf. über 'MyTable.Edit' und schreibst dann einfach 'Bar' in das Feld. Das sollte klappen.

Zu deinem Problem fehlt die information, um was für ein 'EingabeFeld' es sich handelt. Ist es denn ein TDBEdit? Spucken andere Routinen/Ereignisse dort rein? Mit solchen Ereignissen zu arbeiten ist manchmal konfus.

_________________
Na denn, dann. Bis dann, denn.
Lolo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24

Win XP, 2003
Turbo Delphi Pro
BeitragVerfasst: Fr 26.09.08 14:28 
Also,

ich habe das zwar als erstes überprüft, ob ich den Datensatz woanders schon sperre, aber ich prüfs nochmal.

Bei dem EingabeFeld handelt es sich um ein TEdit, ohne Datenbankbezug also. Das ist Absicht, um genau nicht in solche Probleme zu laufen...

Was ich in der Zwischenzeit bemerkt habe: Wenn ich versuche, in dieser Tabelle zu lesen, lande ich umgehend im Debugger bei den Prozessor-Registern. Das spricht eigentlich für die These, dass da irgend was schon gesperrt ist oder doppelt daruf zugreift.

Ich komme jetzt ein paar Tage nicht zum suchen, verfolge das aber in der nächsten Woche weiter. Danke für eure Hilfe.

Lolo

_________________
Du kannst so alt werden wie eine Kuh, Du lernst immer noch dazu!
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 26.09.08 14:33 
Prüf mal deine ADO-Version und upgrade ggf. auf die Neuest. Ältere Versionen sind zickig.

_________________
Na denn, dann. Bis dann, denn.