![]() |
Datenbank: MSSQL • Version: 2008R2 Express • Zugriff über: Delphi/Ado
Probleme beim einfügen von neuen Datensätzen
Hallo zusammen,
bei mir funktioniert das einfügen von neuen Datensätzen teilweise nicht mehr. Wenn ich das einfügen vom Navigator benutze dann öffnet sich ein neuer Datensatz, wenn ich den Befehl append benutze tut sich nichts:
Delphi-Quellcode:
Kann mir jemand dabei helfen?
procedure TFRM_Main.But_NeuClick(Sender: TObject);
begin DM_Rechner.ADS_Rechner.Append; end; Gruß Flash |
AW: Probleme beim einfügen von neuen Datensätzen
Jepp, die Hilfe:
![]() Zitat:
|
AW: Probleme beim einfügen von neuen Datensätzen
Das verwende ich ja so wie ich es oben angegeben habe, aber leider fünktioniert das nicht, die Felder werden nicht leer.
|
AW: Probleme beim einfügen von neuen Datensätzen
Welche Felder? Eingabefelder im Sinne von DBEdits etc.?
|
AW: Probleme beim einfügen von neuen Datensätzen
Hallo...
:gruebel: war das nicht so, daß dem Append automatisch ein Post folgt ? Wenn der Datensatz editiert werden soll muß wieder mit Edit in den Editiermodus versetzt werden, oder ? Zitat:
PS: wenn RowSelect aktiv ist bekommst du das Grid nicht in den "visuellen" Editiermodus |
AW: Probleme beim einfügen von neuen Datensätzen
Ich arbeite ja so gut wie nie mit Append und Konsorten, aber welchen Sinn sollte es haben, nach dem Append gleich ein Post folgen zu lassen? Man muss doch erst einmal die Felder belegen und dann erst wegschreiben, oder irre ich mich?
|
AW: Probleme beim einfügen von neuen Datensätzen
Zitat:
|
AW: Probleme beim einfügen von neuen Datensätzen
nö...
es gibt ja auch AppendRecord, da wird der Datensatz gleich mit Daten angelegt. Append erzeugt imho (lange her) einen leeren Datensatz. Diesen mußt du zum editieren erst wieder in den Edit Modus versetzen und dann mit Post wegschreiben. Auszug aus einer Codeleiche: :zwinker:
Delphi-Quellcode:
...ich meine mich zu errinnern, daß ohne das Edit eine Fehlermeldung kam...
ZQueryDetail.Append;
ZQueryDetail.Edit; ZQueryDetail.FieldValues['KOMPO']:= 'BSK'; . . . ZQueryDetail.Post; |
AW: Probleme beim einfügen von neuen Datensätzen
Na, OK, dann klinke ich mich lieber aus (mache ja eh alles per SQL) :mrgreen:
|
AW: Probleme beim einfügen von neuen Datensätzen
SQL... besser ist das. 8-)
|
AW: Probleme beim einfügen von neuen Datensätzen
Kann man IMHO nicht generalisieren.
Bei eigenen Manipulationen sehe ich es auch so, aber (komplexe) Benutzeroberflächen fackle ich doch lieber über Komponenten ab. |
AW: Probleme beim einfügen von neuen Datensätzen
Nachtrag:
hab es noch mal ausprobiert... tataaa...das Edit ist wirklich nicht notwendig. Lieber eins zu viel als zu wenig :oops: Mann bin ich froh von den datensensitiven Controls weg zu sein... :cheer: |
AW: Probleme beim einfügen von neuen Datensätzen
mit Felder meine ich wie schon jemand schrieb die DBedits und ähnliches, ich benutze kein Grid zum Datensatz hinzufügen.
Also ich benutze sonst auch nur das Append und kein edit dazu, es funktioniert sonst immer ohne Probleme. Aber hier in dem Fall geht es nicht, selbst wenn ich meine alte Accessdatenbank als Quelle benutze. |
AW: Probleme beim einfügen von neuen Datensätzen
Bist Du sicher dass Du auf dem richtigen Dataset append durchführst.
Hast Du Events im AfterInsert, hängt die Datasource richtig .... |
AW: Probleme beim einfügen von neuen Datensätzen
Immer wieder lustig: Im OnNewRecord durch das Dataset scrollen, um z.B. eine neue Id zu erstellen.
Einige Dataset-Derivate mögen es gar nicht, wenn man im dsEdit/dsInsert-Modus ein Lookup macht. |
AW: Probleme beim einfügen von neuen Datensätzen
Ich habe extra ein vereinfachtes Programm erstellt umd das ganze nachzustellen und da habe ich in meinem Datenmodul nur 3 Objekte, eine Connection, ein DataSet und eine DataSource und verweise mit dem Button wie oben direkt auf das Dataset. Im Normalfall lasse ich noch den Cursor auf das erste Feld springen und die Buttons aktivieren und deaktivieren, das hatte ich dann in der einfachen Form weggelassen. Aber beim drücken auf dem +-Button von Navigator reagiert es kommischerweise.
|
AW: Probleme beim einfügen von neuen Datensätzen
Zitat:
Hast Du mal veruschweise ein DBGrid mit angehängt, ein Showmessage ins AfterInsert eingebaut ... :glaskugel: |
AW: Probleme beim einfügen von neuen Datensätzen
Zitat:
|
AW: Probleme beim einfügen von neuen Datensätzen
@vagtler
nicht mehr ... |
AW: Probleme beim einfügen von neuen Datensätzen
das sind ja nur die Objekte für die Anbindung der Datenbank. Auf dem Form hab ich ein Grid das ganz normal den Inhalt der Tabelle zeigt und dazu die DBeditfelder zum Anzeigen bzw. eingeben/editieren.
Delphi-Quellcode:
Weggelassen hatte ich für mein Testprogramm hatte ich die zeilen mit setbuttons und Setfocus da sie für das Anfügen nicht wichtig sind.
procedure TFRM_Main.But_Neuer_RechnerClick(Sender: TObject);
begin DM_Rechner.ADO_DS_Rechner.Append; setbuttonsRechner(2); DBE_Rechner_Bezeichnung.SetFocus end; Was ich suche ist vielleicht eine Einstellung oder was ähnliches das ich eventuell vergessen haben könnte. |
AW: Probleme beim einfügen von neuen Datensätzen
Ist das jetzt das "vereinfachte" Programm bzw. ein Bröckchen daraus?
Was steckt hinter dem Dataset? Table? Query? |
AW: Probleme beim einfügen von neuen Datensätzen
Wie gesagt ich habe einen MS SQL DB auf die wird mittels der Connection/Nativeclient zugegriffen dahinter hängt dann das Ado Dataset mit der Abfrage Select * from Rechner und das DBgrid und die DBEdits greifen dann über ein Datasource auf das Dataset zu.
PS: Es gibt keine Fehlermeldung, es passiert nur einfach nichts. |
AW: Probleme beim einfügen von neuen Datensätzen
Welchen Client benutzt Du?
Irgendwo ein Try Block, der nicht zuende programmiert ist? |
AW: Probleme beim einfügen von neuen Datensätzen
Du meinst um auf die Datenbank zuzugreifen, den Nativeclient wie er mit dem SQL-Server ausgeliefert wird. Version-Nr. ist 10.1.
Try hab ich keinen eingebaut. |
AW: Probleme beim einfügen von neuen Datensätzen
Ich habe nochmal was getestet, ich benutze normal ein Datenmodul wo die ganzen Datenbankverbindungen, Datasets etc.. drin sind, ich habe diese jetzt direct in das Formular eingebaut und dann funktioniert es. Komisch ist das es sonst mit dem Datenmodul funktioniert und hier jetzt nicht, habe es ganz normal unter uses deklariert und auch beim aufrufen von Append angegeben (DM.ADS.append; ) Mein Problem ist das es in dem Program ziemlich viele Datasets und ähnliches gibt und ich die nicht alle im Formular unterbringen kann und damit das Datenmodul brauche.
Flash Wünsche allen ein frohes und gesundes neues Jahr. |
AW: Probleme beim einfügen von neuen Datensätzen
Du kannst beruhigt sein. Das Problem ist nicht das Datenmodul, sondern der Quark, der irgendwo in deinem Code schlummert. Jetzt hast du dran gerüttelt und nun funktionierts. Das liegt aber nicht daran, das "Rütteln" die Lösung ist.
Es verhält sich genauso mit den guten alten Münzen, die man rubbelt, damit sie vom Münzautomaten angenommen werden. Und dabei werden sie beim 2.Versuch sowieso angenommen, aber da man nach dem 1.Versuch rubbelt, denkt man, rubbeln hilft. Räum dein Programm auf, verteile die Daten auf Datenmodule (mehrzahl), wenns sein muss. Oder mach eine Pause und beschäftige dich mit ORM. |
AW: Probleme beim einfügen von neuen Datensätzen
Ich habe ein Testprogramm nur mit dem dem nötigsten(nur eine Tabelle) erstellt und auch da funktioniert es über das Datenmodul nicht. Also kann es meiner Meing nach nicht an dem Quark/ überflüssigem Programcode liegen.
Ab wievielen Elementen sollte mann denn ein neues Datenmodul benutzen? |
AW: Probleme beim einfügen von neuen Datensätzen
Zeig doch mal den Test, der angeblich ohne Datenmodul nicht funktioniert.
Ach ja: Verknüpfungen zwischen Datenmodul und Formular (z.B. TDataset<-TDatasource), die man mit dem Designer erstellt hat, verschwinden gerne mal zwischendurch. Desweiteren ist die Aufrufreihenfolge von Belang. Auch hier verschwinden gerne mal Verknüpfungen. Auf der sicheren Seite bist Du, wenn z.B. das Hauptformular das Datenmodul erstellt und anschließend die Verknüpfungen per Code einrichtet. |
AW: Probleme beim einfügen von neuen Datensätzen
Es funktioniert mit dem Datenmodul nicht richtig. Wenn ich die Connection, das Ado-Dataset und die DataSource in das Formular setze funktioniert es. Im Datenmodul funktioniert es dann nur über den Navigator und nicht mit append, cancel etc...
Was für Quellcode brauchst du denn? |
AW: Probleme beim einfügen von neuen Datensätzen
Zitat:
Hast du mal den Debugger bemüht? So richtig langweilig mit F7 nachvollzogen was passiert wenn? Gruß K-H |
AW: Probleme beim einfügen von neuen Datensätzen
Das Datenmodul sieht wie folgt aus:
Delphi-Quellcode:
Die zugriffe sehen dann wie folgt aus:
unit Datamodul;
interface uses SysUtils, Classes, DB, ADODB; type TDM_Rechner = class(TDataModule) CON_Rechner: TADOConnection; ADS_Rechner: TADODataSet; DS_Rechner: TDataSource; ADS_RechnerID: TAutoIncField; ADS_RechnerBezeichnung: TWideStringField; ADS_RechnerRechnertyp_ID: TIntegerField; ADS_RechnerStatus_ID: TIntegerField; ADS_RechnerBesonderheiten: TWideMemoField; ADS_RechnerGehäuse_ID: TIntegerField; ADS_RechnerNetzteil_ID: TIntegerField; ADS_RechnerMainboard_ID: TIntegerField; ADS_RechnerProzessor_ID: TIntegerField; private { Private-Deklarationen } public { Public-Deklarationen } end; var DM_Rechner: TDM_Rechner; implementation {$R *.dfm} end.
Delphi-Quellcode:
Mit F7 hab ich mal durch geklickt, hab aber keine Erfahrung damit und worauf ich da achten muß. Hab jetzt so nichts gesehen.
procedure TFRM_Main.But_NeuClick(Sender: TObject);
begin DM_Rechner.ADS_Rechner.Append; but_Neu.Enabled:= false; but_abbrechen.Enabled:= true; bitbtn1.Enabled:= false; dbe_bezeichnung.SetFocus end; procedure TFRM_Main.But_AbbrechenClick(Sender: TObject); begin DM_Rechner.ADS_Rechner.Cancel; DM_Rechner.ADS_Rechner.Edit; but_Neu.Enabled:= true; but_abbrechen.Enabled:= false;bitbtn1.Enabled:= true end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz