Fragensteller
Abfrage auf ODBC verbundene Tabellen (immer Ärger mit Bit)

Allgemeine Diskussion
-
Hallo,
habe eine recht einfache Abfrage:
SELECT GD.* FROM dbo_tbl_Gehaeuse_Daten As GD
WHERE (GD.archiv=0 AND GD.Gehaeusenr=4711)archiv ist im SQL Server ein Feld mit Datentyp Bit, Null, Default 0
Diese Abfrage funktioniert bei mir lokal einwandfrei. Beim Kunden funktioniert nichts, zurück wird eine leere Menge gegeben.
Getestet auf 0, Falsch, False => keinerlei Ergebnisse. Getestet auf 1, -1, True, Wahr erhalte ich alle entsprechenden DS.
Ohne Kriterium auf archiv habe ich in der Ergebnismenge sowohl DS mit 0 und mit 1 (-1)
Ich kann es mir beim besten Willen nicht erklären. Ich teste unter Access 2003, beim Kunden unter Access 2010.
SQL Server 2008 (bei mir Express Edition).
Ich habs jetzt so gelöst dass ich über Top 1 sortiert nach ID den aktuellsten DS hole und archiv noch überprüfe. Funktioniert auch wie gewünscht. Aber ich würde doch zu gerne wissen warum das oben nicht funktioniert.
Gruß Andreas
http://www.AccessBlog.de- Typ geändert Bogdan Petru Roiu Dienstag, 6. Dezember 2011 11:34 Diskussion
Alle Antworten
-
Hast du auch mit
SELECT * FROM dbo_tbl_Gehaeuse_Daten WHERE archiv = 0 ;
und
SELECT * FROM dbo_tbl_Gehaeuse_Daten WHERE archiv = 1 ;
sowie
SELECT * FROM dbo_tbl_Gehaeuse_Daten WHERE archiv <> 0 ;
getested?
Welches Service Pack setzten du und dein Kunde ein?
Imho die einfachste Lösung: Benutze eine server-seitige VIEW.
CREATE VIEW vw_GehaeuseDatenPatchBit AS SELECT * , CAST(Archiv AS INT) AS ArchivInt FROM GehaeuseDaten ;
-
Hallo Stefan,
ja hab ich alle probiert, auch mit <1, <>1, <> -1 etc.
<> 0 liefert mir alle DS mit archiv = 1(-1)
Meinst du das ServicePack von Access? Da muss ich nächste Woche mal nachsehen wenn ich wieder beim Kunde bin.
Ja eine serverseitige View würde das Problem auch lösen, danke.
Gruß Andreas
http://www.AccessBlog.de -
Am 09.11.2011 10:27, schrieb Andreas Vogt:> Ich kann es mir beim besten Willen nicht erklären. Ich teste unter> Access 2003, beim Kunden unter Access 2010.>> SQL Server 2008 (bei mir Express Edition).Sehe ich das richtig? Du hast 2003 und der Kunde 2010 als Access-Version?Vielleicht werden bei den beiden Versionen die Bit-Spaltenunterschiedlich eingebunden?Ich habe mir bei meinen Access-Projekten angewöhnt anstatt Bit einenmodifizierten Smallint-Typ zu verwenden der nur Null, 0 und -1 zulässt.Somit kann ich die Spalten Access-typisch verwenden.
-
Hallo,
nein nicht ganz.
ist ein historisches Projekt unter Access 2002/2003.
lokal auf 2k3 entwickelt, getestet und per VM auf Access 2010 getestet.
Beim Kunden soll das dann unter 2010 laufen.
Meine Tests sind identisch unter 2010, lokal funktioniert alles.
Gruß Andreas
http://www.AccessBlog.de -
Hallo Andreas!
Bei Accessabfragen auf verknüpften MSSQL-Server-Tabellen kann es sein, dass "-1" per ODBC als Zahl und nicht als True an den Server weitergereicht wird (ist im Profiler gut sichtbar).
Wenn du statt -1 einfach True schreibst, sollte es kein Problem geben.Anm.: 1 statt -1 könnte auch zu einem Problem führen, falls der Filter von Jet ausgewertet wird.
Tipp: Bei Bit-Feldern verbiete ich gerne NULL, damit ich nicht auf False or NULL prüfen muss, falls ich die "Nicht True" haben will.
(Die NULL-Werte werden unter Access/Jet nämlich als 0/False angezeigt - sie sind aber nicht 0/False!)mfg
Josef
Code-Bibliothek für Access-Entwickler
AccUnit - Testen von Access-Anwendungen
- Bearbeitet Josef Pötzl Montag, 14. November 2011 15:27
-
Hallo,
bin beim letzten Kundenbesuch leider nicht dazu gekommen das nochmals auszutesten. Aber die momentane alternative Lösung bleibt erst mal bestehen. Insofern kann man den Thread jetzt mal als gelöst betrachten.
Gruß Andreas
http://www.AccessBlog.de -
Hallo Andreas,
Andreas Vogt wrote:
was macht es für einen Unterschied ob Diskussion oder Frage?
Es gehoert zur Forumspolicy, Fragen und allgemeine Diskussionen zu
unterscheiden, wobei Grenzen naturgemaess nicht klar gezogen werden
koennen. In diesem Fall schliesse ich mich Stefans Meinung an.
Die Unterscheidung erleichtert spaeter die Suche, durch Einbeziehung oder
Ausklammern von Diskussionen.Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com