Operation muss eine aktualisierbare Abfrage verwenden



  • Hi@all

    // Importfunktion Datenfile (Excel-Datei) laden
     if(OpenDialog1->Execute())
     {
      ADOTable1->Active=false;
      ADOConnection1->Connected=false;
    
      String connstr="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=";
      connstr += OpenDialog1->FileName;
      connstr +=";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;ReadOnly=False'"; //HDR erste Zeile mit Spaltennamen ja/nein
      ADOConnection1->ConnectionString = connstr;
      ADOConnection1->Connected=true;
      ADOConnection1->Mode=cmReadWrite;
      TStringList *TableList = new TStringList;
      // verfügbare Tabellen ermitteln
      ADOConnection1->GetTableNames(TableList);
      // for ( int i=0; i<TableList->Count; i++ ) ShowMessage( TablelIst->Strings[i] ); // Anzeige der verfügbaren Tabellen
    
      // Erste verfügbare Tabelle setzen
      ADOTable1->TableName = TableList->Strings[0];
    
      ADOTable1->ConnectionString = connstr;
      ADOTable1->Open();
      ADOTable1->ReadOnly=false;
      ADOTable1->Active=true;
      ADOTable1->Edit();
    
      // verfügbare Spalten in der Tabelle ermitteln
      TStringList *ItemList = new TStringList;
      //ListBox1->Visible=true; for (int i=0; i<ADOTable1->FieldCount; i++) ListBox1->Items->Add(ADOTable1->Fields->Fields[i]->FieldName); // Anzeige der verfügbaren Spalten
    
      Label14->Caption="";
    
      // MAX/MIN Wert ermitteln und Zellen farblich markieren
      lastData = ADOTable1->RecNo;
      MinMax(ADOTable1, 5);
    
     }
    

    Beim bearbeiten der Tabelle erhalte ich folgende Fehlermeldung:

    EOleException mit der Meldung 'Operation muss eine aktualisierbare Abfrage verwenden'
    

    Thx@all



  • ich schon wieder 😃

    Versuch mal folgendes als ConnectionString

    Provider=MSDASQL;Persist Security Info=False;Data Source=Excel-Dateien;Initial Catalog=c:\Mappe2.xls
    

    Den Pfad für den Initial Catalog mußt du wieder anpassen.



  • @Linnea

    ---------------------------
    Microsoft Datenverknüpfungsfehler
    ---------------------------
    Fehler beim Testen der Verbindung durch einen Fehler beim Initialisieren des Providers. [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
    ---------------------------
    OK   
    ---------------------------
    


  • hmm, klick mal doppelt auf die ADOConnection, dann dort den unteren Punkt anklicken und auf "Aufbauen...". Dort dann bei "Provider" den mit ODBC nehmen und auf "Weiter". In dem oberen Auswahlfeld (Datenquellenname verwenden) sollte dann unter anderem "Excel-Dateien" stehen, das mußt du auswählen. In der untersten Auswahlbox mußt du mal den Pfad zu deiner Datei angeben, auwählen geht hier nicht. Danach auf "Verbindung testen" und dann sollte das eigentlich gehen. Die Einstellung "Excel-Dateien" sollte normalerweise standardmäßig im Windows enthalten sein.

    Wenn das so funktioniert hat, kannst du das zweimal mit "Ok" bestätigen. Danach hast du den aktuellen ConnectionString in der ADOConnection stehen. Wenn du den dort rauskopierst und in deinen Quellcode einfügst, kannst du den dann entsprechend der Pfadangabe anpassen. Aber bitte darauf achten, daß du Initial Catalog und nicht Data Source anpasst.

    Wenn das allerdings nicht geht wirds komplizierter 🙄



  • @Linnea

    In dem oberen Auswahlfeld (Datenquellenname verwenden) sollte dann unter anderem "Excel-Dateien" stehen,
    

    Nix steht da, kann auch nichts eintragen !?

    Wie gesagt, das ganze muss auch auf Fremdrechnern ohne Excel, oder ODBC oder sowas funktionieren.

    Thx@all



  • es ist doch einfacher als ich dachte, der ConnectionString muß wie folgt sein:

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Mappe2.xls;Extended Properties="Excel 8.0;HDR=Yes;";
    

    das IMEX=1; muß raus



  • Kann nicht testen, bekomme auf einmal diese komische Fehlermeldung!?

    ---------------------------
    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt Turnier.exe ist eine Exception der Klasse EOleException mit der Meldung 'Das Format der Initialisierungszeichenfolge entspricht nicht den OLE DB-Angaben' aufgetreten.
    ---------------------------
    Anhalten   Fortsetzen   Hilfe   
    ---------------------------
    


  • du mußt nur zeile 9 deines geposteten Quellcodes anpassen:

    connstr +=";Extended Properties='Excel 8.0;HDR=Yes;[s]IMEX=1;[/s]ReadOnly=False'"; //HDR erste Zeile mit Spaltennamen ja/nein 
    //also
    connstr +=";Extended Properties='Excel 8.0;HDR=Yes;ReadOnly=False'"; //HDR erste Zeile mit Spaltennamen ja/nein
    


  • Ja ist mir schon klar, aber ich kann es nicht testen, weil ich wei gesagt plötzlich andere Fehlermeldungen schon beim Start bekomme ???

    ---------------------------
    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt Turnier.exe ist eine Exception der Klasse EOleException mit der Meldung 'Das Microsoft Jet-Datenbankmodul kann die Datei '' nicht öffnen. Sie ist bereits von einem anderen Benutzer exklusiv geöffnet, oder Sie benötigen eine Berechtigung, um die Daten lesen zu können' aufgetreten.
    ---------------------------
    Anhalten   Fortsetzen   Hilfe   
    ---------------------------
    

    obwohl ich an den Programmeinstellungen jetzt nichts geändedr habe und auch die DAtei nirgends geöffnet ist.
    Hab auch gerade den Rechner noch mal neu gestartet, aber trotzdem beim Start kommt die Fehlermeldung und beim Import die von oben ???

    Muss Schluß machen für heute.
    Danke

    Thx@all


Anmelden zum Antworten