AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler bei INSERT mit TADOCommand
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei INSERT mit TADOCommand

Ein Thema von Moony · begonnen am 21. Aug 2006 · letzter Beitrag vom 21. Aug 2006
Antwort Antwort
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 20:55
Datenbank: MS Access • Zugriff über: TADOConnection
Hallo zusammen,

In einer Routine deklariere ich lokal eine Variable des Typs TADOCommand. Innerhalb dieser Routine werden zwei unterschiedliche Insert-Befehle auf zwei Tabellen innerhalb einer Datenbank ausgeführt (MS Access). Der erste BEfehl wird ohneProbleme durchgeführt, bei dem zweiten gibt es folgende Meldung:

Zitat:
Im Projekt xyz ist eine Exception der Klasse EOleException aufgetreten. Meldung: Das Feld ist zu klein für die Datenmenge, die Sie hinzufügen wollten. Versuchen Sie weniger Daten einzufügen....
Das zweite Problem ist, dass ich im MS Access in der Datenbank eine Abfrage gebaut habe mit der identischen Anweisung und evoila schon wird die Insert-Anweisung ausgeführt.

Demnach verstehe ich nicht was es in der Umgebung für ein Problem sein soll.

Die Anweisung sieht folgendermaßen aus:

Delphi-Quellcode:
  ...

  for i := 0 to ListView.Items.Count - 1 do
  begin
    myItem := ListView.Items.Item[0];
    SQL := 'INSERT INTO Tabelle1 (Feld1, Feld2, Feld3, Feld4, Feld5, ';
    SQL := SQL + 'Feld6, Feld7, Feld8) VALUES (';
    SQL := SQL + Wert1 + ', ''' + myItem.SubItems.Strings[0];
    SQL := SQL + ''', ''' + myItem.SubItems.Strings[1] + ''', ''' + myItem.SubItems.Strings[2];
    SQL := SQL + ''', ''' + myItem.SubItems.Strings[3] + ''', ''' + myItem.SubItems.Strings[4];
    SQL := SQL + ''', ''' + myItem.SubItems.Strings[5] + ''', ''' + myItem.SubItems.Strings[6] + ''')';

    Comm.CommandText := SQL;
    Comm.Execute;
  end;

  ...
Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 21:00
Wie sind die Felder der Tabelle1 deklarier? Und wie lange sind ei Strings die eingefügt werden sollen?
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 21:06
Der Feldeihenfolge wie oben aufelistet: Zahl(LongInt), Text(4), Text(4), Text(4), Text(10), Text(5), Zahl(LongInt), Text(5).

Habe das Problem gefunden. In das Feld mit der Feldlänge 5 wurde ein String mit 1 Zeichen mehr, sprich Länge 6 eingetragen. Aber wenn das zu Fehlern führt, warum hat dann Access direkt innerhalb der Abfrage keinen Fehler verursacht, sondern ganz in Ruhe den Datensatz hinzugefügrt?
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 21:09
Zitat:
Aber wenn das zu Fehlern führt, warum hat dann Access direkt innerhalb der Abfrage keinen Fehler verursacht, sondern ganz in Ruhe den Datensatz hinzugefügrt?
Möglichweise trimmt Access Strings vor dem Einfügen auf die passende Länge.
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 21:17
Das Leerzeichen war innerhalb des Strings, demnach weder am anfang noch am Ende des Strings. Und davon abgesehen wurde es ja so eingefügt wie innerhalb der Entwicklungsumgebung, ergo richtig übergeben & eingefügt, aber falsch nach den Feldlängendefinitionen. Alles sehr merkwürdig.......

Dennoch danke für den Denkanstoß...
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 21:27
Zitat:
Das Leerzeichen war innerhalb des Strings, demnach weder am anfang noch am Ende des Strings.
Mit Trimmen meinte ich jetzt nicht das Entfernen von Leerzeichen am Anfang oder/und Ende des Strings( LeftTrim(), RightTrim(),Trim()) sondern das Abschneiden bei einer bestimmten Länge.
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Fehler bei INSERT mit TADOCommand

  Alt 21. Aug 2006, 21:47
Auch wen das der Fall ist, wurde der String in der vollen falschen Länge eingefügt. Ich habe es ja in der Tabelle überprüft was drin steht.
Ich weiß, daß ich nichts weiß! Sokrates
  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 08:02 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