Autor Beitrag
Uwe.F.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52

W7
D7 Ent. w/o NET
BeitragVerfasst: Sa 24.02.07 13:36 
Hallo liebe Kolleginnen und Kollegen,

ich habe hier ein mittelschweres Problem, bei dem ich einen Tip brauche: ich will minimalistisch mittels ADOTable auf eine ACCESS Datenbank bestehend aus mehreren Tabellen zugreifen. Dabei erhalte ich allein durch die Existenz der Komponente ADOTable (d.h. ohne weitere Programmzeilen) die folgende Fehlermeldung:

Komponente mit der bezeichnung PrimaryKey existiert bereits

Die vollständige Fehlermeldung hänge ich als Dateianhang an.

Und folgende Schritte erzeugen den Fehler:

1. Leeres Form erzeugen (Delphi starten)
2. ADOTable auf das Form ziehen
3. Connectionstring im Dialog aufbauen
4. Verbindung testen: ist erfolgreich
5. Tablename aus Auswahlfeld selektieren --> "Tbl Score" selektieren
6. Active auf True setzen
7. F9 drücken zum Compilieren, Starten und Fehlermeldung lesen :evil:

Das Programm ist in Project1.dpr auf Application.Run stehen geblieben (Debug-Cursor)

Der Hammer ist, die zugehörige Project1.exe läuft (ohne IDE) ohne Fehlermeldung.

Hat irgend jemand eine Idee, woran das liegen könnte?

Ich bin mir ziemlich sicher, dass ich diesen Zugriff im Laufe meiner ersten Gehversuche schon hinbekommen hatte.

Beste Grüße,
Uwe
Einloggen, um Attachments anzusehen!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.02.07 16:02 
kann mir jetzt keinen reim drauf machen. kannst mal deinen quelltext und die *.dfm mit dranhängen, danke.
Uwe.F. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52

W7
D7 Ent. w/o NET
BeitragVerfasst: Sa 24.02.07 16:43 
Es gibt keinen Quelltext - nimm ein leeres Formular und ziehe die ADOTable drauf - thats all. Und genau das ist ja das Merkwürdige.

Ich maches es mal gerade:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ADOTable1: TADOTable;
  private
  public
  end;

var Form1: TForm1;

implementation

{$R *.dfm}

end.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
program Project1;

uses Forms, Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Die DFM:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
object Form1: TForm1
  Left = 387
  Top = 252
  Width = 429
  Height = 287
  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 ADOTable1: TADOTable
    Active = True
    ConnectionString =
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\EMMA tables 2007' +
      '.mdb;Persist Security Info=False'
    CursorType = ctStatic
    TableName = 'Tbl Score'
    Left = 16
    Top = 16
  end
end

So sieht die Konfiguration der ADOTable aus (s. Anhang).

Beste Grüße,
Uwe

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
Einloggen, um Attachments anzusehen!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.02.07 19:25 
kann dein problem nachvollziehen, aber weiss hier keine lösung, da ich nicht mit der ADOTable arbeite. nimm doch einfach 'ne ADOQuery, die funktioniert problemlos :-)
Uwe.F. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52

W7
D7 Ent. w/o NET
BeitragVerfasst: Sa 24.02.07 20:02 
D.h. Du hast es getestet und bekommst die gleiche Fehlermeldung?
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.02.07 20:25 
ja, jetzt bekomm ich eine andere fehlermeldung.

wenn du aber 'ne ADOConnection mit vor die ADOTable setzt, funktionierts wiederum problemlos... also schmeiss 'ne ADOConnection auf dein formular, stell den con-string ein und häng deine ADOtable dran... dann solltes funktionieren.
Uwe.F. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52

W7
D7 Ent. w/o NET
BeitragVerfasst: So 25.02.07 00:34 
Jau - habe ich ausprobiert: geht :D warum auch immer.

Könnte vielleicht ein Fehler im ADO sein?

Na ja, wenn's mit dem Vorschalten der ADOConnect funktioniert, nehme ich es halt so.

Beste Grüße und vielen Dank!
Uwe
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 25.02.07 00:55 
ich weiss es nicht, kann leicht sein. mir ist es jedenfalls noch nie aufgefallen, da ich
  1. immer mit 'ner query arbeite und
  2. immer mit 'ner connection
die connection alleine schon um die allgemeinen parameter immer an einem ort zu haben und nur einmal pflegen zu müssen. solltest dir das auch angewöhnen... ausserdem ist die conn auch die voraussetzung damit du mit start transaction/commit work/rollback arbeiten kannst.

wünsch dir noch einen schönen abend.