collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 24
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13971
  • stats Beiträge insgesamt: 66518
  • stats Themen insgesamt: 8970
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Formularfilter aus Access 2010 mit einer SQL 2012 Datenbank  (Gelesen 4951 mal)

Offline Forseti2003

  • Newbie
  • Beiträge: 5
Hallo,

ich hab ein Problem, das unmittelbar mit einer SQL 2012 Datenbank zusammenhängt - schätzungsweise.
Das Problem ist folgendes, wir haben ein Access 2010 Frontend, in dem wir auf eine MS SQL 2012 zugreifen. Soweit läuft und funktioniert aktuell alles.

Wir wollten nun aus einem Formular den Formularfilter in einen Bericht übergeben, was aber nicht funktioniert.

Wenn wir den Filter mit Me.Filter übergeben wollen, erhalten wir als Beispiel folgenden Ausdruck:

Me.Filter= "([Query].[Feld] = "text            ")"
und dazu einen Fehler - wenn wir das ganze mit einem numerischen Feld ausführen, funktioniert alles.
Nun hab ich schon einiges darüber im Internet zusammengesucht und der Fehler scheint daran zu liegen, das die Datenbank die betroffenen Felder als Text-Felder anders führt, wie das Access möchte und damit durcheinander kommt und dabei die Felder falsch behandlet.

Jetzt wäre die Frage, kann man irgendeine Einstellung vornehmen, mit der die SQL Datenbank und Acces auch vernünftig über Textfelder kommunizieren können?

Grüße
Forseti
« Letzte Änderung: Juli 09, 2014, 17:59:23 von Hondo »
 

Offline bahasu

  • AoM Team
  • Access Guru
  • *****
  • Beiträge: 1888
Re: Formularfilter aus Access 2010 mit einer SQL 2012 Datenbank
« Antwort #1 am: Juli 09, 2014, 13:31:00 »
Hi,

was passiert nach Austausch von " gegen '?

Me.Filter= "([Query].[Feld] = 'text            ')"


Ansonsten: Wie lautet der Fehler?
Servus
 

Offline Forseti2003

  • Newbie
  • Beiträge: 5
Re: Formularfilter aus Access 2010 mit einer SQL 2012 Datenbank
« Antwort #2 am: Juli 09, 2014, 14:06:13 »
Würde ich die " durch ' an der besagten Stelle ändern - würde die Filterung funktionieren. Da ich aber in den Filter ja nicht eingreifen kann, bringt mich das momentan noch nicht vorwärts.

Die Fehlermeldung lautet "Ungültiger Spaltenname 'Text      '.

Der Filter im Formular wird ja durch das geteilte Formular über die Tabellenstruktur automatisch erzeugt und im Formular-Filter hinterlegt. Das Formular also filter sich erstmal selbst richtig.

Danach greif ich für den Report genau diesen Filter mit Me.Filter ab und übergebe diesen Filter genauso an den Report.
Dort passiert dann das Problem, das er denkt, aufgrund der ", das es nicht der Wert, sondern eine Spalte ist und diese findet er dann im Query nicht, da es diese Spalte ja gar nicht gibt.

Hab zwar schon an ein Replace gedacht, da aber zumindest die erste und letzte " vorhanden sein muss und nur dazwischen ausgetauscht werden soll, ferner der Filter ja auch noch unterschiedliche Kriterien enthalten kann (maximal soviele wie Spalten im Formular vorhanden sind) bringt mich das dann auch nicht weiter.
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3109
Re: Formularfilter aus Access 2010 mit einer SQL 2012 Datenbank
« Antwort #3 am: Juli 09, 2014, 14:10:39 »
Hi,

du solltest zwischen dem ersten und letzten Gänsefüßchen alle anderen gefahrlos durch Hochstriche ersetzen können - möchte ich mal behaupten. ;)rptFilter = Chr(34) & Replace(Mid(Me.Filter, 2, Len(Me.Filter)-2), Chr(34), "'") & Chr(34)
Nachtrag:
Vermutlich existieren das erste und letzte Gänsefüßchen gar nicht, das Replace sollte also auf den Filter komplett angewendet werden können.
« Letzte Änderung: Juli 09, 2014, 14:15:11 von MaggieMay »
Freundliche Grüße
MaggieMay
 

Offline Forseti2003

  • Newbie
  • Beiträge: 5
Re: Formularfilter aus Access 2010 mit einer SQL 2012 Datenbank
« Antwort #4 am: Juli 09, 2014, 14:29:10 »
Hab mal die Zeile so eingefügt, wie Du geschrieben hast und ins DoCmd.Report dann den Wert für Filter mit rptFilter gesetzt. Erhalte aber dennoch einen Fehler, wenn auch eine andere:

In der Nähe von ')' wurde ein nicht boolescher Asudruck in einem Kontext angegeben, in dem eine Bedingung erwartet wird.
Hab jetzt noch schnell mit Sprungmarke geprüft, was ankommt. Der Wert im Filter lautet so:

Me.Filter="([Query].[Feld]= "Text            ")"
Ich schätze, durch das Replace entsteht dann:
'([Query].[Feld]= 'Text        ')' - das kann dann Access wiederum nicht verwerten.
« Letzte Änderung: Juli 09, 2014, 14:33:16 von Forseti2003 »
 

Offline Forseti2003

  • Newbie
  • Beiträge: 5
Re: Formularfilter aus Access 2010 mit einer SQL 2012 Datenbank
« Antwort #5 am: Juli 09, 2014, 14:46:11 »
Halt Stop! Ich habs, bzw. Du - hab die Chr(34) am Anfang und Ende entfernt und dann nochmal sauber durchlaufen lassen und siehe da. Es hat funktioniert. Vielen Dank - bist ein Goldschatz!