AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADOTable, Excel über Jet, Filter funktioniert nicht mit NULL
Thema durchsuchen
Ansicht
Themen-Optionen

ADOTable, Excel über Jet, Filter funktioniert nicht mit NULL

Ein Thema von jensw_2000 · begonnen am 6. Jul 2005 · letzter Beitrag vom 6. Jul 2005
 
jensw_2000
(Gast)

n/a Beiträge
 
#1

ADOTable, Excel über Jet, Filter funktioniert nicht mit NULL

  Alt 6. Jul 2005, 19:43
Datenbank: Excel • Zugriff über: ADO über Jet
Ich habe ein Problem beim Setzen des Dataset Filters, wenn ich eine Spalte mit NULL filtern muss.

Generell funktioniert der Filter, nur werden alle Datensätze herausgefiltert, bei denen die Filterprüfung auf NULL trifft.

Generell arbeite ich so mit der Excel Datei

Delphi-Quellcode:
      
      // Opendialog öffnen und AdoConnection verbinden

      conn_import.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
        'Provider=Microsoft.Jet.OLEDB.4.0; ' +
        'Data Source=' + Opendialog.Filename + ';' +
        'Extended Properties=Excel 8.0; ' +
        'Persist Security Info=False';
      conn_Import.open;
      
      // Eine Combobox (xlsWorksheets mit den Arbeitsbereichsseiten der Excel Arbeitsmappe füllen

      xlsWorksheets.Enabled := conn_Import.Connected;
      if conn_Import.Connected then
      begin
        conn_Import.GetTableNames(xlsWorksheets.Items, true);
      end;

      // Wenn es mindestens eine Arbeitsbereichsseite gibt, die mit einem Filter versehen und Öffnen

      if xlsWorksheets.items.count =0 then
      begin
        Showmessage('In der gewählten Arbeitsmappe sind keine Arbeitsbereichsseiten verfügbar');
        exit;
      end
      else begin
         xlsWorksheets.itemindex:=0;
         With tbl_Import do
         begin
           close;
           Connection:=conn_Import;
           tablename:=xlsWorksheets.items[0];
           filter:='Name <>'''' AND gesperrt ='''' ';
           try
             open
           except
             on e:exception do
               showmessage(e.message);
           end;
           try
             filtered:=true;
           except
              on e:exception do
              Showmessage('Filter konnte nicht gesetzt werden'+#13#10+e.message);
           end;
         end;
      end;

Soweit so gut.

Wenn ich jedoch eine XLS Datei habe, in der das Feld "gesperrt" nicht vorhanden ist, und ich dieses hinzufüge,
fallen alle Datensätze durch den Filter.

Ich habe die AdoTable zur Fehlersuche nach dem Öffnen in einer "While not eof" Schleife durchlaufen und
mir im DebugMode die Werte von "Gesperrt" anzeigen lassen.
Ergebnis: ... nicht "" sondern NULL

Das Spaltenformat von "gesperrt" ist in der Excel Tabelle "Text".


Problem:

Ich habe jetzt folgende Filter vergeblich getestet :

filter:='Name <>'''' AND gesperrt ='''' ';
filter:='Name <>'''' AND gesperrt <>'''+'ja'+''' ';
filter:='Name <>'''' AND (gesperrt ='''' OR gesperrt IS NULL)';

Nichts.
Variante 1 und 2 bleiben die Datensätze mit NULL im "gesperrt" Feld im Filter hängen und Variante 3 gibt eine Fehlermeldung "Inkompatible Typen" beim Setzen von Filtered :=true aus..

Ich bin verzweifelt ...

Hilfeeeee
  Mit Zitat antworten Zitat
 


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 01:25 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