AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Einfügen der neuen Datensätze
Thema durchsuchen
Ansicht
Themen-Optionen

Einfügen der neuen Datensätze

Ein Thema von Natalia · begonnen am 12. Dez 2003 · letzter Beitrag vom 13. Dez 2003
Antwort Antwort
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#1

Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 13:05
Hallo Leute,

Kann mir vielleicht jemand bei dem folgenden Problem helfen:
In einem DBGrid das Einfügen des neuen Datensatztes verhindern,
aber die Tabelle trotzdem editieren können?

Danke für alle Vorschläge
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 13:12
hallo,
ich weiß nicht, ob ich Dich richtig verstehe, deshalb mal meine Idee nach Deinen Ausführungen:

Editiere die Tabelle in einer Transaktion. Die Änderungen werden erst sichtbar nachdem Du die Änderungen mit "commit" bestätigst oder mit "Rollback" verwirfst.

Dachtest Du an so etwas?

Gruß,

Barnti
  Mit Zitat antworten Zitat
Natalia

Registriert seit: 13. Mai 2003
47 Beiträge
 
Delphi 7 Professional
 
#3

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 13:24
Ich meine es etwas anders: ich habe eine Tabelle vor mir,
da kann ich alles rein schreiben was ich möchte, aber ich darf
keine neuen Datensätze einfügen. Ist es möglich?
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 13:35
Hallo Natalia,

Du meinst Du trägst etwas in das DBGrid ein, was nicht in die Tabelle soll?

Solange Du nicht postest und gegebenefalls auch "committest" wird die Tabelle nicht beschrieben.

Vielleicht sagst Du noch etwas mehr zu Deinem Problem...

Gruß,

Barnti
  Mit Zitat antworten Zitat
ims

Registriert seit: 23. Jul 2003
Ort: Sirnach
157 Beiträge
 
Delphi 7 Professional
 
#5

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 13:37
hast du einen dbnavigator? wenn ja, sperr einfach den button um einen neuen datensatz hinzuzufügen (nbInsert)
ansonsten besteht diese möglichkeit doch gar nicht? (korrigier mich wenn ich falsch liege...) aber wenn ich nur ein bdgrid habe, kann ich keine datensätze hinzufügen aber editieren geht ohne probleme...
wie greifst du denn auf die db zu? ado? mit query oder dataset?

[Edit]
@barnti: wenn du ado benutzt und ohne dbnavigator hantierst, dann wird automatisch "gepostet" wenn du editierst...
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 13:42
Die Komponentenkette sieht ja so so aus:

[TDataSet]-------[TDataSource]------[TDbGrid]

Wenn Du im DbGrid (durch scrollen hinter den letzten Datensatzeintrag) einen neuen Datensatz "einfügst", wird das DataSet in den Zustand dsInsert versetzt. Erst wenn im Grid dieser Datensatz verlassen wird, wird er tatsächlich eingefügt. Das DbGrid kann diese Aktion nicht verhindern - das DataSet schon. Schau Dir mal das Ereignis "BeforeInsert" des DataSets an. Dort könntest Du ansetzen und zum Beispiel mit
Delphi-Quellcode:
procedure TForm1.Query1BeforeInsert(DataSet: TDataSet);
begin
  DatabaseError('Diese Datenmenge kann nur gelesen werden', Self);
end;
verhindern, das ein Datensatz eingefügt wird. Diese Variante verhindert so allerdings das Einfügen eines Datensatzes in dieses DataSets, egal woher die Einfügung stammt. Wenn Du also auf andere Art als über das Grid ein Hinzufügen von Datensätzen zulassen möchtest, müsstest Du entweder checken, wer da gerade einfügen möchte und nur im Falle des Grids den Fehler anzeigen, oder ein anderes Dataset zum einfügen benutzen. Dort müsstest Du dann nach dem Einfügen das Dataset des Grids aktualisieren.

Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 14:57
Zitat von ims:
hast du einen dbnavigator? wenn ja, sperr einfach den button um einen neuen datensatz hinzuzufügen (nbInsert)
ansonsten besteht diese möglichkeit doch gar nicht?
Das genügt nicht. Wenn Du im letzten Datensatz des DBGrid bist un auf Cursor nach unten drückst, dann wird eine leere Zeile angezeigt und Du kannst einen neuen Datensatz einfügen! Ich glaube dasselbe passiert auch, wenn Du auf die Taste EINFG drückst.
  Mit Zitat antworten Zitat
ims

Registriert seit: 23. Jul 2003
Ort: Sirnach
157 Beiträge
 
Delphi 7 Professional
 
#8

Re: Einfügen der neuen Datensätze

  Alt 12. Dez 2003, 15:00
@r_kerber: hast recht
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#9

Re: Einfügen der neuen Datensätze

  Alt 13. Dez 2003, 17:46
Hallo Natalia,

ich werte in OnKeyDown die Tasten aus und damit verhindere ich das Anhängen von Datensätzen.

Code:
procedure TForm.dbg32KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ....
  case key of
    ....
    VK_Down: key := 0;
    ....
  end; {of case}
  ....
end;
mfg
eddy
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Einfügen der neuen Datensätze

  Alt 13. Dez 2003, 18:50
Hallo Natalia,

eine bitte vorweg: Gib bei Fragen ausfürhlicher Informationen womit du arbeitest, das ist sonst ein stochern im Nebel:

Ich nehme an Du arbeitest mit TDBgrid, TDatasource, TTable, BDE, Paradox oder DBase.

Du kannst jetzt ein Insert verhindern indem du in der Ereignisroutine beforeInsert mit "abort" abbrichst:

Code:
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
  abort;
end;
Grüsse
Woki
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz