Announcement

Collapse
No announcement yet.

Excel_import unter ADO fehlerhaft

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

  • Excel_import unter ADO fehlerhaft

    Hallo,ich habe D5 und Ado 2.6. In der Excel-Tabelle stehen in der Spalte HausNr die Werte 4; 5; 8; 9; 12; 7b; 6 . Die HausNr 7b kommt nicht an, da
    Ado die Spalte als Kommazahl interpretiert und 7b KOMMENTARLOS löscht.
    Was tun?

  • #2
    Hallo, Du könnest in Excel die Tabelle nach der HausNr absteigend sortieren. Dann stehen die alphanumerischen Hausnummern an erster Position. Dadurch wird die Spalte in Access zu einem Textfeld.
    <br>Beim Nachvollziehen Deines Problems habe ich festgestellt, dass ich keine Tabelle (über die Zwischenablage) von Execl nach Access kopieren kann. Nach der Frage: "Enthält die erste Zeile Ihrer Daten die Spalten Überschriften" kommt folgende Fehlermeldung:<br><i>"Das Microsoft Jet-Datenbankmodul konnte das Objekt [Tabelle$Z1S1:Z4S3} nicht finden.Stellen Sie sicher, dass das Objekt existiert und dass die Namens- und Pfadangaben richtig eingegeben wurden."</i><br>
    Was soll ich tun, damit das Einfügen über die Zwischenablagen wieder klappt.<br>Evt. leigt es ja daran, dass ich das .NET Framework und Visual Studio .net Beta 2 auf dem Rechner installiert habe

    Comment


    • #3
      I) <BR>
      Sortieren geht nur, wenn max. 1 Spalte betroffen ist.<BR>
      Auch Vorwahlen sind betroffen: ab und zu sind die Nullen am Anfang weg <BR>
      <P>
      II) <BR>
      Für den Import nehm ich sowohl die von Andreas Kosch vielfach erwähnten<BR>
      Connection-Settings: <BR>
      ADOConnection1.Provider := 'Microsoft.Jet.OLEDB.4.0';<BR>
      ADOConnection1.Properties['Extended Properties'].Value := 'Excel 8.0';<BR>
      ADOConnection1.Properties['Data Source'].Value := 'D:\Daten\XLS\country.xls';<BR>
      oder aber ODBC:<BR>
      Provider=MSDASQL.1;Extended Properties="DSN=Excel-Dateien;DBQ=D:\Daten\XLS\country.xls;DriverId=22;M axBufferSize=4096;PageTimeout=5<BR>
      das Ergebnis bleibt gleich enttäuschend!<BR&gt

      Comment


      • #4
        Wenn also Datenverlust beim Ado-Import auftritt:<BR>
        Wer kennt ein Tool, mit dem man Excel-Dateien importieren kann?<BR>
        (Per COM ist meine Notlösung: zu langsam/setzt Office voraus/zuviel Arbeit)<BR>

        Danke

        Comment


        • #5
          Hallo,

          &gt;..Wenn also Datenverlust beim Ado-Import auftritt...

          Um das Problem zu löschen, stehen 2 Optionen zur Verfügung:

          1. Dummy-Datensatz in der 1. Zeile der Excel-Tabelle: Dort wird in die betroffene Zelle die Zeichenkette "Dummy" eingetragen, so dass die MS JET Engine beim Auswerten der Schema-Daten der Tabelle von einem Textfeld ausgeht.

          2. In Excel wird anstelle 1 die Kennzeichung als Text über <b>'1</b> (Hochkomma 1) eingetragen. In diesem Fall wird die MS JET Engine davon informiert, dass jede dort vorgefundene Zahl als Text, aber nicht als numerische Information interpretiert werden soll. Excel zeigt das Hochkomma nach dem Verlassen des Feldes nicht mehr an - aber die Formatinformation "Text" bleibt permanent dieser Zelle zugeordnet.

          Wie ein Test mit ADO Express zeigt, tauchen im TDBGrid in beiden Fällen sowohl die Hausnummer 1 als auch 1b in der Anzeige auf.

          Der 2. Weg könnte so aussehen:
          <pre>
          Name Vorname STR HNR PLZ ORT
          Dummy Dummy Dummy Dummy 53001 Bonn
          Mustermann Manfred Irgendwo 1 53000 Bonn
          Musterfrau Gerda Nirgendwo 1b 99091 Erfurt
          </pre>

          <pre>
          object DBGrid1: TDBGrid
          Left = 32
          Top = 80
          Width = 761
          Height = 120
          DataSource = DataSource1
          TabOrder = 0
          TitleFont.Charset = DEFAULT_CHARSET
          TitleFont.Color = clWindowText
          TitleFont.Height = -11
          TitleFont.Name = 'MS Sans Serif'
          TitleFont.Style = []
          end
          object ADOConnection1: TADOConnection
          ConnectionString =
          'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\ExcelDatenb' +
          'ank.xls;Extended Properties=Excel 8.0;Persist Security Info=Fals' +
          'e'
          Mode = cmShareDenyNone
          Provider = 'Microsoft.Jet.OLEDB.4.0'
          Left = 24
          Top = 32
          end
          object ADODataSet1: TADODataSet
          Connection = ADOConnection1
          CursorType = ctStatic
          CommandText = 'Tabelle1$'
          CommandType = cmdTableDirect
          Parameters = <>
          Left = 72
          Top = 32
          end
          object DataSource1: TDataSource
          DataSet = ADODataSet1
          Left = 112
          Top = 32
          end
          </pre&gt

          Comment


          • #6
            Das mit den Hochkommas klappt, aber ist eigentlich keine Lösung:<BR>
            Mir ist es immer peinlich, Endandwendern zu erklären, meine Anwendug ist nicht in der Lage, dieses Problem automatisch zu lösen.<BR>
            Ich spiele mit dem Gedanken, per COM die Hochkommas in die Excel-Datei einzutragen. Geht aber Richtung stümperhaft... :

            Comment


            • #7
              Doch noch ein paar Anmerkungen:<BR>
              Natürlich ist der Versuch, aus Excel Daten zu importieren, lebensmüde.<BR>
              Durch die Feld-Formartierungsmöglichkeiten (anti-WSYWG), die Formeln, die Graphiken gibts Fehlerquellen ohne Ende.<BR>
              Mich ärgert nur, dass MS beim Versuch, mir die Arbeit abzunehmen(Feldtyp-Analyse) das Gegenteil erreicht.<BR>
              Aber:<BR>
              Bin ich der einzige, der aus Excel Daten auslesen muss?<BR>
              Irgendjemand dürfte duch das Problem schon gelöst haben?<BR>
              mfg Stefan

              Comment


              • #8
                Hallo,

                das grundsätzliche Problem liegt darin, dass eine EXCEL-Tabelle nun mal eben <b>keine</b> Datenbank ist. Bei einer richtigen Datenbank wird die Feldstruktur vor der Dateneingabe exakt definiert, so dass die Einhaltung der Regeln geprüft werden kann

                Comment

                Working...
                X