AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Invalid Field Size bei TAdoDataset
Thema durchsuchen
Ansicht
Themen-Optionen

Invalid Field Size bei TAdoDataset

Ein Thema von Marco Steinebach · begonnen am 22. Feb 2021 · letzter Beitrag vom 1. Mär 2021
Antwort Antwort
Seite 1 von 2  1 2      
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#1

Invalid Field Size bei TAdoDataset

  Alt 22. Feb 2021, 21:13
Datenbank: FireBird • Version: 3.x • Zugriff über: ADO
Hallo zusammen,
nichteinmal ein einfaches Datenbank-Hallo-Welt ist mir vergönnt.
Ich habe ein riesiges Projekt , mit einem Formular und einer Komponente und zwar
TAdoDataset.
Bei Connection-String steht meine, eingerichtete, Datenquelle drin, und bei CommandText
SELECT * FROM MOO.
Prüfe ich die Datenquelle mittels TAdoConnect, connected true, klappt die Verbindung.
Setze ich nun mein
AdoDataset1 auf
active true
kommt genau jene Fehlermeldung
Invalid field size.
Ich hab nicht mal was angegeben, geändert oder so, ich will nur einfach, dass er mir die Datensätze aus der Tabelle ausgibt.....

Hiiiiilfe! Bitte!

Herzlich grüßt
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Invalid Field Size bei TAdoDataset

  Alt 23. Feb 2021, 00:19
Hallo,
das DataSet braucht eine Connection, also eine 2. Komponente.
Heiko
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: Invalid Field Size bei TAdoDataset

  Alt 23. Feb 2021, 07:41
Moin zusammen,
Die Nacht war kurz, aber Erfolgreich .
Ich verbinde mich (Delphi5), mittels ODBC zu einem Firebird-Server V3.0.7 - geht nicht, wie im 1. Post beschrieben.
Nehme ich, alles Andere bleibt gleich, einen Firebird-Server V2.5.9 , ist alles schön.
Gibt es zwischen V2.5 und V3.0.7 signifikante Unterschiede, ich brauche, denke ich, nur die SQL-Basics wie select, insert, update delete?
Wenn ja, also wenn der FB3 z.B, viel schneller ist, kann ich irgendwie herausfinden, welche Anweisung der ODBC-Treiber schickt, die dem FB3 nicht passt?

Herzlich grüßt
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#4

AW: Invalid Field Size bei TAdoDataset

  Alt 23. Feb 2021, 10:57
Bei ADO nehme man:

TADOQuery und gebe dort in der Eigenschaft SQL das gewünschte Statement ein.
Delphi-Quellcode:
ADOQuery.Close;
ADOQuery.SQL.Text := 'select * from moo';
ADOQuery.Open;
Den Connectionstring kann man auch bei der entsprechenden Eigenschaft der TADOQuery angeben, wenn man sowieso nur eine TADOQuery im Programm nutzen möchte. Alternativ kann man natürlich auch eine TADOConnection nehmen, über diese die Verbindung aufbauen und sie der entsprechenden Eigenschaft der TADOQuery zuweisen.

Es gibt also zwei Wege, um eine Verbindung zur Datenbank aufzubauen.

Bei mir laufen Delphi 7, FireBird 3 über ODBC und TADO-Komponenten auf Windows XP problemlos.

Wie ein Connectionstring aussehen kann steht hier: https://www.delphipraxis.net/1483279-post36.html

Minimalversion mal eben mit Delphi 7 zusammengedaddelt:

Das Formular (DFM)
Delphi-Quellcode:
object Form1: TForm1
  Left = 192
  Top = 107
  Width = 188
  Height = 165
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString =
      'Provider=MSDASQL.1;Persist Security Info=False;Data Source=MOO' +
      ';Initial Catalog=MOO'
    Left = 48
    Top = 16
  end
  object ADODataSet1: TADODataSet
    Active = True
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 'select * from moo'
    Parameters = <>
    Left = 48
    Top = 64
  end
end
Quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Die Verbindung zur Datenbank wird damit bereits in der IDE hergestellt und die Tabelle geöffnet, ohne Fehlermeldung.

Solltest Du beim TAdoDataset bei der Eigenschaft FieldDefs etwas eingegeben habe, prüfe bitte, ob die dortige Eingabe mit dem Tabellenaufbau in der Datenbank übereinstimmt. Differenzen, zwischen den dortigen Eingaben und den tatsächlichen Definitionen auf Datenbankseite, führen zu dem von Dir genannten Fehler.
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#5

AW: Invalid Field Size bei TAdoDataset

  Alt 23. Feb 2021, 18:28
Huhu,
Genau so, wie du es beschrieben hast, hatte ich es auch. Die Verbindung zur DB klappt problemlos, nehme ich beim AdoDataset den integrierten SQL-Editor, zeigt er mir auch alle Felder, deren Typen und Längen korrekt an.
Sobald ich allerdings, zum Ausprobieren,
active auf TRUE setze kommt der beschriebene Fehler.
An den FieldDefs hab ich nix gemacht, hab's auch nochmal von ganz forne begonnen, ist ja, im Moment ohnehin nur zum Lernen, weil ich sicherstellen wollte, nicht irgendwo,aus Versehen, Blödsinn eingegeben zu haben.
Aber nix geht.
Mach ich das Ganze mit FB2.5.9 funktioniert alls sofort und tadellos.
Das gleiche gilt auch für AdoQuery, sobald ich active auf TRUE setze, rappelt es. Geht auch, wenn ich im Code
adoDataset1.open;
aufrufe.

Herzlich grüßt
Marco
Marco Steinebach

Geändert von Marco Steinebach (23. Feb 2021 um 18:31 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Invalid Field Size bei TAdoDataset

  Alt 24. Feb 2021, 05:40
Hallo,
ahn, FB3 geht nicht, FB2 geht.

Dann sind die Treiber zu alt.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: Invalid Field Size bei TAdoDataset

  Alt 24. Feb 2021, 06:35
Zitat:
Dann sind die Treiber zu alt.
+ 1

...probiere mal ZEOS. (bekennender ADO "Hasser" wegen reichlich Problemen in der Vergangenheit (Locate MSSQL z.B.) )
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Invalid Field Size bei TAdoDataset

  Alt 24. Feb 2021, 07:16
Hallo,
hier geht es um u.a. ODBC, also etwa sseeehr altes.
Zitat:
Gibt es zwischen V2.5 und V3.0.7 signifikante Unterschiede
Ja, der (Schreib)-Zugriff auf die Systemtabellen ist nicht mehr erlaubt.
Ob der ODBC-Treiber da Murks macht -> k.A. .

Ich würde per Google mal wegen dem ODBC und "Tracing" der Befehle suchen.

Und zuletzt: FB3 ist nicht unbedingt schneller als FB1 oder FB2.
Heiko
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
599 Beiträge
 
Delphi XE6 Enterprise
 
#9

AW: Invalid Field Size bei TAdoDataset

  Alt 25. Feb 2021, 19:13
Die Meldung "Invalid Field Size" kommt immer dann, wenn die Tabelle/Anfrage persistente Felder nutzt und sich die Felddefinitionen geändert haben, so dass die persistenten Felder nicht (mehr) mit den Datenbankfeldern übereinstimmen.
Also z.B. ein Feld bei der einen Datenbank INTEGER ist (32 Bit) und bei der anderen BIGINT (64 Bit). Oder ein VARCHAR-Feld hat bei der einen Datenbank 20 Zeichen und bei der anderen 30. Sowas in der Art.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#10

AW: Invalid Field Size bei TAdoDataset

  Alt 26. Feb 2021, 11:00
Es kann zuweilen auch eine schlechte Idee sein, wenn man in der IDE bei den TADOConnections, den TADOQuerys, TADOTables oder sonstigen TADODataSet-Nachfahren Active auf True setzt.

Die Verbindung zur Datenbank sollte man frühestens im FormCreate herstellen, ebenso die TADODataSets ... erst frühestens dort öffnen.

Der beschriebene Fehler kann (muss aber nicht) eine Folge davon sein (zumindest bei älteren Delphi-Versionen), dass in der IDE andere Bedienungen erfüllt sind, als zur Laufzeit des Programmes. Daraus folgt, dass dann zur Laufzeit des Programmes die Felddefinitionen ... nicht mit denen zur Entwicklungszeit von der IDE im Formular gespeicherten übereinstimmten müssen (Folgen daraus siehe: https://www.delphipraxis.net/1483857-post9.html).

Ansonsten: Firebird_ODBC_2.0.5.156_Win32 und Firebird 3.0.2 (in Kombination mit TADO... und Delphi 7) funktionieren bei mir absolut problemlos.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:39 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