Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism Merkwürdiges SELECT-Verhalten des Firebird .Net DataProvider (https://www.delphipraxis.net/59763-merkwuerdiges-select-verhalten-des-firebird-net-dataprovider.html)

r_kerber 28. Dez 2005 12:40

Datenbank: Firebird • Version: 1.5 • Zugriff über: ADO.Net

Merkwürdiges SELECT-Verhalten des Firebird .Net DataProvider
 
Moin moin,

ich greife mit dem Firebird .Net Data Provider auf meine FB-DB zu.
Delphi-Quellcode:
  daSpiele.SelectCommand.CommandText := 'SELECT termin, ort, m1, m2, t1, t2 ' +
    'FROM spiele WHERE ART = ?';
  daSpiele.SelectCommand.Parameters.Add('@gruppe', FbDbType.VarChar, 5).Value
    := 'A';
  daSpiele.Fill(dsSpiele, 'spiele');
Wenn ich obenstehenden Quelltext verwende, erhalte ich eine Fehlermeldung:
Zitat:

Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.
Beschreibung: Beim Ausführen der aktuellen Webanforderung ist ein unverarbeiteter Fehler aufgetreten. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

Ausnahmedetails: System.Data.ConstraintException: Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.
Steht jedoch folgendes im Quelltext, da läuft das DB-Zugriff korrekt:
Delphi-Quellcode:
  daSpiele.SelectCommand.CommandText := 'SELECT * ' +
    'FROM spiele WHERE ART = ?';
  daSpiele.SelectCommand.Parameters.Add('@gruppe', FbDbType.VarChar, 5).Value
    := 'A';
  daSpiele.Fill(dsSpiele, 'spiele');
Hat jemand dafür eine Erklärung?

r_kerber 29. Dez 2005 18:01

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Kann sich das wirklich niemand erklären?
Nachtrag:
Zitat:

Zitat von r_kerber
Delphi-Quellcode:
  daSpiele.SelectCommand.CommandText := 'SELECT termin, ort, m1, m2, t1, t2 ' +
    'FROM spiele WHERE ART = ?';
  daSpiele.SelectCommand.Parameters.Add('@gruppe', FbDbType.VarChar, 5).Value
    := 'A';
  daSpiele.Fill(dsSpiele, 'spiele');

Dieses hier genutzte SQL-Select funktioniert unter IBExpert ohne Probleme.

MagicAndre1981 29. Dez 2005 21:02

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Welche Version des ADO.NET Providers nutzt du?

Zeig mal bitte die Definition deiner Tabelle.

André

r_kerber 30. Dez 2005 04:41

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Zitat:

Zitat von MagicAndre1981
Welche Version des ADO.NET Providers nutzt du?

1.7
Zitat:

Zitat von MagicAndre1981
Zeig mal bitte die Definition deiner Tabelle.

Hier mal kurz die komplette DDL aus IBExpert kopiert:
SQL-Code:
/******************************************************************************/
/****              Generated by IBExpert 30.12.2005 05:40:15               ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES WIN1252;



/******************************************************************************/
/****                                Tables                               ****/
/******************************************************************************/


CREATE GENERATOR GEN_SPIELE_ID;

CREATE TABLE SPIELE (
    LFD_SPIEL INTEGER NOT NULL,
    TERMIN    TIMESTAMP NOT NULL,
    ORT       INTEGER DEFAULT 0 NOT NULL,
    ART       VARCHAR(5) NOT NULL,
    M1         INTEGER NOT NULL,
    M2         INTEGER NOT NULL,
    T1         INTEGER,
    T2         INTEGER
);




/******************************************************************************/
/****                             Primary Keys                            ****/
/******************************************************************************/

ALTER TABLE SPIELE ADD CONSTRAINT PK_SPIELE PRIMARY KEY (LFD_SPIEL);


/******************************************************************************/
/****                             Foreign Keys                            ****/
/******************************************************************************/

ALTER TABLE SPIELE ADD CONSTRAINT FK_SPIELE_1 FOREIGN KEY (M1) REFERENCES MANNSCHAFTEN (LFD_MANNSCHAFT) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SPIELE ADD CONSTRAINT FK_SPIELE_2 FOREIGN KEY (M2) REFERENCES MANNSCHAFTEN (LFD_MANNSCHAFT) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE SPIELE ADD CONSTRAINT FK_SPIELE_3 FOREIGN KEY (ORT) REFERENCES ORTE (LFD_ORTE) ON DELETE SET DEFAULT ON UPDATE SET DEFAULT;


/******************************************************************************/
/****                               Indices                               ****/
/******************************************************************************/

CREATE INDEX SPIELE_IDX1 ON SPIELE (ART);


/******************************************************************************/
/****                               Triggers                              ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/****                         Triggers for tables                         ****/
/******************************************************************************/



/* Trigger: SPIELE_BI */
CREATE TRIGGER SPIELE_BI FOR SPIELE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.LFD_SPIEL IS NULL) THEN
    NEW.LFD_SPIEL = GEN_ID(GEN_SPIELE_ID,1);
END
^


SET TERM ; ^



/******************************************************************************/
/****                              Privileges                             ****/
/******************************************************************************/

Elvis 30. Dez 2005 11:48

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Sieht aus als hättest u zuviel Zeit mit ODBC oder sogar BDP verschwendet. ;)
Beim FbProvider sieht das leider so @-verseucht wie beim Sql Server aus:
SQL-Code:
WHERE ART = @gruppe
Aber immerhin benannte Parameter.

btw: Der FbProvider hat eine Doku, die dir das nach 2 Minuten statt 2 Tagen gesagt hätte...

r_kerber 30. Dez 2005 12:12

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Zitat:

Zitat von Elvis
Sieht aus als hättest u zuviel Zeit mit ODBC oder sogar BDP verschwendet. ;)

Nein eigentlich nicht, ich dachte aber es gehört ein : vor den Parameternamen, was ja im IBExpert auch funktioniert. Deshalb habe ich ja unbenannten Parameter verwendet.
Das war aber nicht meine Frage... Es geht um diesen Teil des SQL-Statements:
Zitat:

Zitat von r_kerber
Delphi-Quellcode:
  daSpiele.SelectCommand.CommandText := 'SELECT termin, ort, m1, m2, t1, t2 ' +

Zitat:

Zitat von Elvis
btw: Der FbProvider hat eine Doku, die dir das nach 2 Minuten statt 2 Tagen gesagt hätte...

Wie Du siehst, ist meine Frage auch nach zwei Tagen noch nicht gelöst. :-(

Elvis 30. Dez 2005 12:45

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Zitat:

Zitat von r_kerber
Das war aber nicht meine Frage... Es geht um diesen Teil des SQL-Statements

Ok, habe mal den ersten Beitrag gelesen...:duck:

Und wenn due die Daten mal normal ausliest? Alsomit einem IDataReader und einem Container eines Value/Reference types?
Du könntest ja mal das XSD des DataSets zeigen und die Daten, die deine Abfrage liefert. Rumraten mag ich dann nicht wirklich.;)

Nicht dass ich irgendjemandem diese DataSet-Viecher empfehlen will, aber falls du schon viel Code drumrumgebaut hast...

MagicAndre1981 30. Dez 2005 16:26

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Code:
daSpiele.SelectCommand.CommandText = "SELECT termin, ort, m1, m2, t1, t2 FROM SPIELE WHERE ART=@gruppe";
daSpiele.SelectCommand.Parameters.Add("@gruppe",FbDbType.VarChar,5).Value = 'A';
daSpiele.Fill(dsSpiele, "spiele");
dataGrid1.DataSource = dsSpiele;
dataGrid1.DataMember = "spiele";
Also bei mir gehts, aber du hast die Refenzierenden Tabellen nicht aufgelistet, vllt haste da einen Bug drin :?

r_kerber 31. Dez 2005 06:54

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Elvis
Du könntest ja mal das XSD des DataSets zeigen und die Daten

Jetzt wo Du es sagst, fällt mir auf, daß gar kein xsd erzeugt wurde. :gruebel:
Zitat:

Zitat von MagicAndre1981
Also bei mir gehts, aber du hast die Refenzierenden Tabellen nicht aufgelistet, vllt haste da einen Bug drin :?

Die Tabellendefinitionen und die Daten für die Tabelle spiele sind im Anhang.
Zitat:

Zitat von Elvis
Und wenn due die Daten mal normal ausliest? Alsomit einem IDataReader und einem Container eines Value/Reference types?

Ich will diese ja direkt in einem Web-DataGrid anzeigen.

MagicAndre1981 31. Dez 2005 19:10

Re: Merkwürdiges SELECT-Verhalten des Firebird .Net DataProv
 
Also bei mir gehts. Ich habe die DB angelegt und die Daten befüllt. Das SELECT funzzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.
Seite 1 von 3  1 23      

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