InStrRev in ASP und Access
Tilo Roeder
- asp.net
Hallo zusammen,
ich benötige in einer SQL-Abfrage eine Gruppierung nach Pfad bei einem Feld welches Dateinamen enthält. In einer Abfrage in der Acess-Datei selbst ist die einfach mit GROUP BY Left(Filename,InStrRev(Filename,"")) zu machen. Dies funktioniert jedoch nicht aus ASP heraus, dort kommt folgender Fehler:
Microsoft][ODBC Microsoft Access Driver] Undefinierte Funktion 'InStrRev' in Ausdruck
Hat jemand eine Idee, wie ich dies umgehen kann. Per ODBC ist nur die Funktion InStr, jedoch nicht InstrRev bekannt - ich benötige aber das letzte Auftreten aines Zeichens in einem String, dies kann ich mit InStr nicht ermitteln.
Schon mal Danke für irgendwelche Ideen,
Tilo
Hi,
hoho, habe gerade eine sehr verrückte Idee, leider gerade nur eine MySQL-Referenz zur Hand, aber eine verrückte Idee wäre es,
GROUP BY Left(Filename, InStr(Reverse(filename), "")
zu versuchen (falls Access Reverse als Umkehr des Inhalts kennt, ab dann geht ja der erste Backslash wieder in Ordnung.
Viel Glück!
hoho, habe gerade eine sehr verrückte Idee, leider gerade nur eine MySQL-Referenz zur Hand, aber eine verrückte Idee wäre es,
GROUP BY Left(Filename, InStr(Reverse(filename), "")...
Wirklich 'ne verrückte Idee, jedoch ist der ODBC-Treiber nicht verrückt genug. Access slbst kennt StrREverse als Funktion, per ODBC jedoch wieder nicht, d.h. gleicher Fehler.
Trotzdem Danke für den Versuch,
Tilo
Halihallo Tilo
ich benötige in einer SQL-Abfrage eine Gruppierung nach Pfad bei einem Feld welches Dateinamen enthält. In einer Abfrage in der Acess-Datei selbst ist die einfach mit GROUP BY Left(Filename,InStrRev(Filename,"")) zu machen. Dies funktioniert jedoch nicht aus ASP heraus, dort kommt folgender Fehler:
Microsoft][ODBC Microsoft Access Driver] Undefinierte Funktion 'InStrRev' in AusdruckHat jemand eine Idee, wie ich dies umgehen kann. Per ODBC ist nur die Funktion InStr, jedoch nicht InstrRev bekannt - ich benötige aber das letzte Auftreten aines Zeichens in einem String, dies kann ich mit InStr nicht ermitteln.
Wonach willst du hier gruppieren? - Nach der letzten Position von '' in einem
Dateinamen mit Pfad??? - Was soll das bringen? - Damit sortierst du lediglich die
Pfadtiefe (nach Zeichenlänge, nicht nach Unterverzeichnisanzahl). Ist es wirklich das,
was du willst? - Ich verstehe den Sinn dahinter nicht. Diese Gruppierung hat IMHO keinen
praktischen Nutzen.
Da es diese Funktion in ODBC nicht gibt, musst du auf eine programmiertechnische
Umsetzung ausweichen, oder ein Feld in der DB haben, welches bereits vorberechnete Werte
zur Gruppierung enthält (die Vorberechnung kannst du dann bei jedem INSERT/UPDATE durch
ASP erledigen).
Viele Grüsse
Philipp
...
Wonach willst du hier gruppieren? - Nach der letzten Position von '' in einem
Dateinamen mit Pfad??? - Was soll das bringen? - Damit sortierst du lediglich die
Pfadtiefe (nach Zeichenlänge, nicht nach Unterverzeichnisanzahl).
Ich will nach dem Pfad ohne Dateinamen gruppieren, daher auch der Ausdruck LEFT(Filename, InStrRev(Filename, "")) dies macht für mich schon einen Sinn. (z.B: c:\a\b\c.txt ergibt c:\a\b)
Ein weiters Feld kann ich nicht einbringen, da die DB von einem anderen Programm (MP3db) aufgebaut wird, welches ich nicht anpassen kann.
Grüße,
Tilo
Halihallo Tilo
Ich will nach dem Pfad ohne Dateinamen gruppieren, daher auch der Ausdruck LEFT(Filename, InStrRev(Filename, "")) dies macht für mich schon einen Sinn. (z.B: c:\a\b\c.txt ergibt c:\a\b)
Oh, ich muss mich entschuldigen. Das LEFT habe ich ganz und gar vergessen. Natürlich
macht das Sinn.
Ein weiters Feld kann ich nicht einbringen, da die DB von einem anderen Programm (MP3db) aufgebaut wird, welches ich nicht anpassen kann.
Tjö, also wenn du über ODBC keine Lösung findest (ich kenne mit mit dieser Schnittstelle
zuwenig aus), würde ich empfehlen, dass du a) eine programmiertechnische Lösung über ASP
erarbeitest (Problem: Alle Daten einlesen und selber Gruppieren braucht viel Speicher
und Performance) oder b) ein Abbild der Datenbank/Tabelle produzierst, wo du das neue
Feld für die Gruppierung von ASP vorberechnet hast (Problem: Redundanz, Aktualität der
Daten, hoher Performanceverlust durch Abbilden der Tabelle(n)).
Ich gehe mal davon aus, dass dieses Projekt nicht sehr frequentiert (nur von dir?)
benutzt wird, dann wären oben genannte Umsetzungen zwar nicht optimal, aber ertragbar.
Viele Grüsse
Philipp