Announcement

Collapse
No announcement yet.

Kann man dbf Dateien mit Ado öffnen/bearbeiten?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kann man dbf Dateien mit Ado öffnen/bearbeiten?

    Ich möchte aufkeinen Fall auf die BDE zugreifen, bis jetzt hatte ich keine Probleme mit dem Zugriff auf Access2000-Datenbanken, doch jetzt muß ich auf eine dbf Datei zugreifen.

    <b>Wie mache ich das?</b>

    BINE

  • #2
    ich glaube ich habe es geschafft.

    BINE :

    Comment


    • #3
      Ich verwende den Provider Microssoft OLE DB Privider for <b>ODBC Drivers</b>

      Greife ich da e nicht auf die BDE zu??

      *hopenot*

      BINE :

      Comment


      • #4
        Hallo,

        die Antwort auf diese Frage hängt davon ab, welche dBASE-Version geschrieben werden soll. MDAC (genauer gesagt die JET ENGINE 4) kann nur alte dBASE-Versionen schreiben, für neuere dBASE-Versionen wird nur dann ein Schreibzugriff unterstützt, wenn die JET ENGINE auf eine <b>installierte BDE</b> zurückgreifen kann. Bei einem ODBC-Treiber hängt es von der internen Implementierung ab, die Dokumentation dieses Treibers sollte Genaueres sagen.
        &#10

        Comment


        • #5
          Seit dem update meines Win 95 + office 2000 kann ich nicht mehr auf die dbf Datei zugreifen was ist passiert?

          Ich muß die Daten nur lesen können.

          BINE :

          Comment


          • #6
            Hallo,

            das kann nicht an Office 2000 liegen, denn dann würde ich auch auf dieses Problem stossen ;-)

            Ich würde zum Test in einem neuen Projekt eine TADOConnection einmal über den Dialog so konfigurieren, dass ein "gängiger" Connection-String entsteht

            Comment


            • #7
              Problem gelöst!! Es hatte etwas mit dem Update zu tun, mußte alles wieder neu installieren

              Habe das Update bei 2 Pc eingespielt, aber nur bei einem ging es sofort wieder

              BINE :

              Comment


              • #8
                <b>HELP </b>

                Ich bekomme keinen Zugriff mehr auf meine dbf Datei!!
                Wenn ich direkt auf das verzeichnis gehe und teste sagt er mir <b>"Erfolgreich"</b> doch wenn ich versuche meinen ConnectionString zur Laufzeut zu erstellen bekomme ich die Fehlermeldung <b>"Fehler in der Autentifizierung"</b>

                Ich habe schon mit der datei gearbeitet doch jetzt geht es nicht mehr (siehe ConnectionString unten!)

                <pre>
                Connected:= false;
                ConnectionString:= (Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source= %s;Extended Properties=dbase 5.0;Persist Security Info=False', [dbfpfad]));
                LoginPrompt:= false;
                Connected:= true;
                </pre>

                Dazu kommt noch das ich nicht weiß in welcher dbase Version die datei erstellt worden ist

                HELP!!! BINE :

                Comment


                • #9
                  Hi Bine,

                  mehr zum internen Aufbau von dfb's findest du unter http://community.borland.com/article/0,1410,15838,00.html.

                  Ich würde auf jeden Fall mit TAdoConnection arbeiten, bezogen auf den Connection String. Ich habe irgendwo gelesen, das es unterschiede gibt zwischen TAdoConnection.ConnectionString und z.B. TAdoCommand.ConnectionString.

                  Die folgense Sequenz generiert zur Laufzeit eine dbase Tabelle, anstatt von myCommand kann man auch myAdoDatset verwenden und auf
                  die Tabelle zugreifen.

                  Ich arbeite mit TAB's (Delphi). Sieht ein bisschen merkwürdig aus. Ich hoffe Du kannst das lesen.

                  <pre>
                  function adoDabaseCreateTable(var AdoConn : TAdoConnection;
                  const TableName, TablePfad : string;
                  const SqlString : WideString; Overwrite : Boolean = False) : Boolean;
                  {
                  Funktion kann unter Verwendung von Create Table generiert werden, Alter Table ist noch in Vorbereitung.
                  }
                  var strDataSource : String; // path
                  myAdoCommand : TADOCommand;

                  begin
                  // init
                  // wenn kein Pfad übergeben wird, soll der App Pfad verwendet werden
                  if strIsEmpty(TablePfad) then strDataSource := ExtractFilePath(Application.EXEName);

                  try
                  with AdoConn do
                  begin
                  Connected := false;
                  Provider := 'Microsoft.Jet.OLEDB.4.0';
                  CursorLocation := clUseClient;
                  Properties['Extended Properties'].Value := 'dBASE 5.0';
                  Properties['Data Source'].Value := strDataSource;
                  LoginPrompt := false;
                  Connected := true;
                  end;
                  except
                  AdoConn.Connected := false;
                  Result := false;
                  ShowMessage('ADOConnection konnte nicht aufgebaut werden.');
                  exit;
                  end;

                  // Prüfen ob Tabelle bereits vorhanden ist
                  if Overwrite then { TO DO }
                  begin
                  end;

                  // Tabelle generieren
                  myAdoCommand := TADOCommand.Create(Application);
                  try
                  with myAdoCommand do
                  begin
                  Connection := AdoConn;
                  CommandText := SqlString;
                  Execute;
                  end;
                  except
                  myAdoCommand.Free;
                  end;
                  end;
                  </pre>

                  Bis dan

                  Comment


                  • #10
                    Hallo Bine,

                    hat mir jetzt auch keine Ruhde gelassen. Ich habe das ganze mal durchgespielt. Es funktioniert soweit, ist aber nur ne Beta.

                    Du braust drei Komponenten in einem Datenmodul oder Form, wie Du willst.

                    TAdoConnection, TAdoDataset, TDataSource und ein DBGrid zum testen.
                    In den Komponenten brauchst Du nichts eintragen, mit dem Connectionen Builder sollte auf keinen Fall was gemacht werden. Ich weis nicht wie man die Eigenschaft .Properties leeren kann. Also wenn das schon was eingetragen wurde, sollte das entfernt werden.

                    <pre>
                    function adoDabaseOpenTable(var AdoConn : TAdoConnection; var AdoDataset : TAdoDataSet; const DataSource : TDataSource; const tablename, path : string) : boolean;
                    begin
                    try
                    with AdoConn do
                    begin
                    Connected := false;
                    Provider := 'Microsoft.Jet.OLEDB.4.0';
                    CursorLocation := clUseClient;
                    Properties['Extended Properties'].Value := 'dBASE 5.0';
                    Properties['Data Source'].Value := Path;
                    LoginPrompt := false;
                    Connected := true;
                    end;

                    with AdoDataSet do
                    begin
                    Active := False;
                    Connection := AdoConn;
                    CommandType := cmdTable;
                    CommandText := tablename;
                    Active := true;
                    end
                    except
                    ShowMessage(' :-( ');
                    Exit;
                    end;

                    Result := true;
                    end;

                    procedure TForm1.TabelleOeffnenClick(Sender: TObject);
                    begin
                    adoDabaseOpenTable(dm1.adoconn_dbase,dm1.dbfDataSe t,dm1.dbfDataSource,'matze','v:\cnsd\ado');
                    end;

                    </pre>

                    Klappt soweit, man kann auch Daten im Grid eingeben. Blos gibst es Probleme bei der Aktualisierung vorhandener Datensätze. Das muss ich nocheinmal prüfen.

                    Bis dann... :-

                    Comment

                    Working...
                    X