AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Datenbanken und BDP... komfortables Einlesen von Daten?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbanken und BDP... komfortables Einlesen von Daten?

Ein Thema von Rexet · begonnen am 22. Jul 2005 · letzter Beitrag vom 26. Jul 2005
Antwort Antwort
Rexet

Registriert seit: 24. Feb 2005
15 Beiträge
 
#1

Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 22. Jul 2005, 14:18
Datenbank: MySQL • Zugriff über: BDP - Corelab-Komponenten
Hallo...

Ich hab vor kurzem geschafft erstmals Daten in meine kleine MySQL Datenbank einzulesen.
Nur muss ich das leider höchst unkomfortabel mittels vieler Parameter realisieren...

Der DataAdapter erzeugt z.B für meine Insert-Anweisung folgenden Code:

INSERT INTO projektverwaltung.tmitarbeiter(gruppeID, titel, name, vorname, erstelltvonID, erstelltvonkuerzel) VALUES (?, ?, ?, ?, ?, ?) Jetzt liegt es halt an mir das ganze zu befüllen. Bei der Update Anweisung sieht es gleich aus, nur muss ich noch einen Parameter extra für die momentane Position in der Tabelle mitgeben.

UPDATE projektverwaltung.tmitarbeiter SET gruppeID = ?, titel = ?, name = ?, vorname = ?, erstelltvonID = ?, erstelltvonkuerzel = ? WHERE ID = ? Ich hab also probiert die Tabelle zu öffnen,einen Wert zu ändern und danach abzuspeichern.
Für diesen Zweck benutze ich Eingabefelder welche ich mit der Eigenschaft "Databindings" an die Felder im Dataset geknüpft hab.
Nun die Probleme:

* Eigentlich sollte die "Databindings" in beide Richtungen funktioneren, bei mir anscheinend aber nur zum lesen.
* Die Methode "Update(dataset)" des Dataadapters erkennt nicht, wenn ich Daten editiere oder einfüge. Sondern tragt bei mir nur eine neue Kopie des alten Datensatzes ein, anstatt einen alten zu verändern oder einen neuen einzfügen.
* Ich muss dem Programm explizit sagen, ob es einen Wert löschen, editieren oder einfügen soll, die Methode Update die sich eigentlich um die Entscheidung kümmern sollte, tut genau das nicht.
* Wo sind so nette Befehle wie "first, next, post, usw" hin? Warum muss ich mich um alle SQL-Operationen selbst kümmern?

Gibt es also irgendwie einen einfacheren Weg, ohne ein Datagrid zu benützen?
Danke, D.
  Mit Zitat antworten Zitat
Texas

Registriert seit: 15. Jul 2005
Ort: Laatzen
59 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 25. Jul 2005, 00:49
Hallo Rexet

Ich arbeite eigentlich nur mit Interbase aber ich glaube bei MySQL geht das auch

Eine Query für MySQL anlegen

Query1.sql.clear;
Query1.sql.add(‘ select count(ID) as Menge from projektverwaltung.tmitarbeiter where ID = :SID’);
Query1.parambyname(‘SID’).AsInteger = ID der Quelle
Query1. ExecSQL;
If Query1.Fieldbyname(‘Menge’)AsInteger > 0 then
Update …
Else
Insert ….


Gruss Texas
Michael
  Mit Zitat antworten Zitat
Rexet

Registriert seit: 24. Feb 2005
15 Beiträge
 
#3

Re: Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 25. Jul 2005, 10:16
Zitat von Texas:
Hallo Rexet

Ich arbeite eigentlich nur mit Interbase aber ich glaube bei MySQL geht das auch

Eine Query für MySQL anlegen

Query1.sql.clear;
Query1.sql.add(‘ select count(ID) as Menge from projektverwaltung.tmitarbeiter where ID = :SID’);
Query1.parambyname(‘SID’).AsInteger = ID der Quelle
Query1. ExecSQL;
If Query1.Fieldbyname(‘Menge’)AsInteger > 0 then
Update …
Else
Insert ….


Gruss Texas
Hey Texas!

Danke für die Antwort.

Ich hab unter .NET das Problem daß ich sowas unkompliziertes wie ein Query nicht mehr benutzen kann, aber ich finde deine Idee gut und werd mal probieren, damit mein Problem zu lösen.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

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

Re: Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 25. Jul 2005, 11:00
Moin Rexet,

Zitat von Rexet:
Ich hab unter .NET das Problem daß ich sowas unkompliziertes wie ein Query nicht mehr benutzen kann, aber ich finde deine Idee gut und werd mal probieren, damit mein Problem zu lösen.
Dafür gibts doch die bdpCommand-Komponente mit der Eigenschaft CommandText.
Und wo ich gerade dabei bin:
Zitat von Rexet:
Wo sind so nette Befehle wie "first, next, post, usw" hin? Warum muss ich mich um alle SQL-Operationen selbst kümmern?
First, next, etc gibt's nicht mehr. Über ein .net-Dataset hangelt man sich via Datensatz-Index: Looping through a .NET DataSet - by Anders Ohlsson.
  Mit Zitat antworten Zitat
Texas

Registriert seit: 15. Jul 2005
Ort: Laatzen
59 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

Re: Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 26. Jul 2005, 00:12
Hallo Rexet
ich habe mir noch mal ein wenig

Kannst Du nicht eine Stored Procedure in deiner Datenbank einfügen


z.B.

Delphi-Quellcode:
CREATE PROCEDURE INSUPD_ARTIKEL (
    AART_ID INTEGER,
    AART_NR VARCHAR(20),
    AART_BEZ VARCHAR(40),
    AART_EKP NUMERIC(15,4),
    AART_EKPMENGE NUMERIC(10,4),…)

AS
BEGIN

  /* Artikel_id wurde nicht mit übergeben */
  IF ((aart_id IS NULL) OR (aart_id < 0)) THEN BEGIN
    /* neue Artikel_id bestimmen */
    aart_id = gen_id(artikel_id_gen, 1);
  END

  new_art_id = :aart_id;
  
  /* Datensatz einfügen */
  INSERT INTO artikel
  (
    art_id ,
    art_nr ,
    art_bez ,
    art_ekp ,
    art_ekpmenge ,´...
  )
  VALUES
  (
    :aart_id ,
    :aart_nr ,
    :aart_bez ,
    :aart_ekp ,
    :aart_ekpmenge ,...);

 
  /* Doppelter Primärindex */
  WHEN SQLCODE -803 DO BEGIN

    UPDATE artikel
    SET
      art_id = :aart_id ,
      art_nr = :aart_nr ,
      art_bez = :aart_bez ,
      art_ekp = :aart_ekp ,
      art_ekpmenge = :aart_ekpmenge ,...
    WHERE
      art_id = :aart_id;
    END
END
Gruß Michael
Michael
  Mit Zitat antworten Zitat
Rexet

Registriert seit: 24. Feb 2005
15 Beiträge
 
#6

Re: Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 26. Jul 2005, 13:02
Zitat von Texas:
Hallo Rexet
ich habe mir noch mal ein wenig

Kannst Du nicht eine Stored Procedure in deiner Datenbank einfügen

...
Soweit ich weiß hat MySQL leider nicht die Möglichkeit dazu stored procedures zu verwenden..... (*mich an interbase zurückerinnere* )
  Mit Zitat antworten Zitat
Rexet

Registriert seit: 24. Feb 2005
15 Beiträge
 
#7

Re: Datenbanken und BDP... komfortables Einlesen von Daten?

  Alt 26. Jul 2005, 13:08
Zitat von r_kerber:
Moin Rexet,

Zitat von Rexet:
Ich hab unter .NET das Problem daß ich sowas unkompliziertes wie ein Query nicht mehr benutzen kann, aber ich finde deine Idee gut und werd mal probieren, damit mein Problem zu lösen.
Dafür gibts doch die bdpCommand-Komponente mit der Eigenschaft CommandText.
Und wo ich gerade dabei bin:
Zitat von Rexet:
Wo sind so nette Befehle wie "first, next, post, usw" hin? Warum muss ich mich um alle SQL-Operationen selbst kümmern?
First, next, etc gibt's nicht mehr. Über ein .net-Dataset hangelt man sich via Datensatz-Index: Looping through a .NET DataSet - by Anders Ohlsson.
Oh... "BDPCommand" wurde von mir übersehen... danke (Hab mir gedacht, das ist nur zum Ausführen von SQL-Statements, die keine Ergebnismenge zurückliefern)

Und Danke für den Link, ich werd mir den gleich vornehmen...
  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 09:38 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