AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBExpress, TSimpleDataset, DBGrid
Thema durchsuchen
Ansicht
Themen-Optionen

DBExpress, TSimpleDataset, DBGrid

Ein Thema von steni · begonnen am 7. Okt 2004 · letzter Beitrag vom 8. Okt 2004
Antwort Antwort
steni

Registriert seit: 28. Feb 2004
3 Beiträge
 
#1

DBExpress, TSimpleDataset, DBGrid

  Alt 7. Okt 2004, 19:27
Hi Ihr Experten,
ich hab ein Problem welches mir dicke Trauerringe unterhalb der Augen einbringt
Und so jetzt kommts.:
Ich hab eine Datenbankapplikation geschrieben, die auch herrlich funzt

Allerdings möchte ich über das Grid auch meine Daten editieren können, das geht in dem Grid auch ganz gut
.....ich möchte die Änderungen, natülich auch in die DB übernehmen, das geht natülich nicht,lol,
die query über mehrere Tabellen und irgendwie checkt er`s nicht

ALS DB verwende ich MSSQL Server 2000 und die DBExpressTreiber als Interface.

Passend dazu die Komponenten TSimpleDataset,DATASOURCE,DBGRID,DBNAVIGATOR, und 'ne Verbindung hab ich natü+rlich auch TWDATABASE.
Einfügen wollte ich die vorgenommenen Änderungen in dem Grid in etwa so:

procedure TForm3.DBGrid7ColExit(Sender: TObject);
begin
simpledataset1.open;
simpledataset1.ApplyUpdates(110);
simpledataset1.Close;
simpledataset1.open;
end;


Es is egal ob man noch ein insert, oder post hinzufügt,er nimmt`s nicht an,
in der poben spezifizierten source habe ich erwartet das er das tut ,nach dem close kommt er aber immer wieder mit den alten Daten zurück.
In der Hilfe stand nur das es probs gibt mit querys über mehrere Tabellen(welche querys gehen nicht über mehrere Tabellen????? )

So komm mir aber keiner TCustomClientDataset wäre besser geeignet der kann nur unidirektional Daten verarbeiten, also nur anzeigen....

Ich würd mich freuen, wenn einer von Euch Profis mir weiterhelfen würde

[edit=sakura] Nur Großbuchstaben ist WIE SCHREIEN. Und Leerzeichen sollen imho auch einen Zweck haben! Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: DBEXPRESS,TSIMPLEDATASET,DBGRID

  Alt 7. Okt 2004, 21:25
Moin,

mach dir das Leben doch nicht so schwer.

Also du hast ein DBGrid, SimpleDataSet, DataSource und alles wunderbar verbunden und aktiviert. (Also du siehst die Daten im Grid) und nun füllst du folgende Ereignisroutinen der SimpleDataSet-Komponente:

- AfterDelete
- AfterPost

und zwar mit...

SimpleDataSet.ApplyUpdates(0); und hier bitte keine 110 reinschreiben. Die Angabe steht für die Anzahl der Fehler, die zugelassen werden und sollte eigentlich 0 sein!

Das war schon alles, viel Spass...

MfG
Thorsten
  Mit Zitat antworten Zitat
steni

Registriert seit: 28. Feb 2004
3 Beiträge
 
#3

Re: DBEXPRESS,TSIMPLEDATASET,DBGRID

  Alt 7. Okt 2004, 23:33
Danke für die schnelle Hilfe!!!!!!
damit kann ich in dem Grid jetzt neue Datensätze einfügen, editieren nimmt er aber immer noch nicht an.
Allerdings kann ich in der MSSQL Datenbank die View beliebig editieren, schöner wär`s aber im Programm,
denke könnte an der referentiellen Integretät liegen, dann aber dürfte ich der View der Datenbank auch nichts mehr editieren können.
Wenn jemand noch Rat weiss?????
greetz-st
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DBEXPRESS,TSIMPLEDATASET,DBGRID

  Alt 7. Okt 2004, 23:39
Moin,

das Ereignis AfterPost wird aber beim Einfügen und Editieren aufgerufen. Wenn also das eine geht, muss das andere auch gehen.
Probiere es doch erstmal mit einer Tabelle aus und dann mit dem View.
Im Enterprise-Manager kannst du alles ändern?
Als wer bist du dort angemeldet (sa?)
Wer bist du für die Datenbank, wenn du den Zugriff über DBExpress durchführst?

Das sollten ein paar Denkanstöße sein...

MfG
Thorsten
  Mit Zitat antworten Zitat
steni

Registriert seit: 28. Feb 2004
3 Beiträge
 
#5

Re: DBEXPRESS,TSIMPLEDATASET,DBGRID

  Alt 8. Okt 2004, 08:30
Hi!!!
Also erstmal die MSQL Datenbank läuft auf meinem Rechner also auf dem Client.
Das ist bei MSSQLSERVER normal gar nicht möglich weil es sich nur auf ServerBetriebssystemen installieren lässt.
Microsoft war aber so nett die DesktopEngine zu entwickeln, die es dir ermöglicht MSQLDatenbanken auf Clients zu installieren, die MSDE findest du auf jeder Office Version ab XP glaub ich ansonsten ,
runterladen unter [URL=http://www.microsoft.com/sql/msde/default.asp].
Jetzt kannst über den Enterprise Manager(der ist nur auf der MSSQLSERVER2000) neue oder gesicherte Datenbanken auf deinem Client wiederherstellen ,oder wenn Du den nicht hast kannst Du über die cmd den Befehl OSQL -E aufrufen damit kannst Du auch arbeiten allerdings nicht sehr bequem .
Wer bin ich für die Datenbank, ja Admin halt, (integrierte NTAutorität verwenden )
, dann noch zwei Dateien editieren unter Borland shared/DBExpress, dbxconnections.ini,dbxdrivers.ini.
und dann kannst du die Datenbank im Objektinspektor auswählen, unter den Wert Active auf true setzen.

Na ja wenn du vielleicht auch vorhast mit MSSQLSERVER nwas zu machen frag ruhig, das geht mir jetzt zu weit.

So nochmal zu meinem Grid als ich es erstellt habe kam eine Fehlermeldung in etwa so 'kann das Feld ID wegen mehrdeutigkeit nicht zuordnen, ID is mein Primärschlüssel, folglicher weise auch unter dem selben Namen als ForeignKey in korrespondierenden Tabellen vorhanden.
Ich hab den Fehler dann ausgebügelt in dem ich einer Variablen den Wert DS_Master.ID migegeben habe,
also immer wenn er eigentlich 'ID' hat sag ich Ihm nimm DS-Master_ID, etwas vereinfacht erklärt.

Vielleicht sollte ich die Fremdschlüssel umbenennen nur den Datentyp so lassen, ich werd das mal versuchen. Ansonsten Torsten wenn du noch eine Lösung hast....
greetz-st
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: DBExpress, TSimpleDataset, DBGrid

  Alt 8. Okt 2004, 21:37
Moin,

du brauchst mir nichts über den MSSQL-Server zuerklären, ich arbeite mit der 2000 Version auf meinen Rechner (Client) und bin voll zufrieden und kann auch alles machen, was ich möchte.

Nun gut, ich habe gefragt, weil ich z.B. nicht mit dem Administrator User arbeite und somit könnte ich eigentlich nicht alles machen, was der Admin kann. Man kann aber beim Enterprise Manager einstellen, ob man die NTAutorität benutzt oder eine vorgegebene (Benutername/Passwort vom Admin eingeben), dann kann man auch als User mit keinen Adminrechten auf der Datenbank als Admin arbeiten. Aber das nur nebenbei.

Zurück zu deinem Grid-Problem...
Wie sieht den deine SQL-Anweisung für das Grid aus?
Bei komplizierteren Abfragen musst du eine SQLDataSet mit ClientDataSet und DataSetProvider benutzen.

Bei einer einfachen SQL-Abfrage reicht die SimpleDataSet:

z.B.: SELECT *
FROM tabelle

wenn die SQL-Anweisung auf mehreren Tabellen zugreift (um Informationen zusammenzusammeln) aber es wird nur eine Tabelle geschrieben, dann kann man im SQLDataSet sagen welche Felder geschrieben werden und welche nur gelesen werden.

z.B.: SELECT *
FROM tabelleA a
INNER JOIN tabelleB b
ON a.id = b.id

Hoffe es hilft...


MfG
Thorsten
  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 20:26 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