Seite 1 von 1

Dateien suchen und öffnen

Verfasst: Mi 11. Aug 2021, 13:14
von JuRo
Hallo ihr lieben,
ich sitze mal wieder an einem Problem, bei dem ich alleine nicht weiter komme.
Ich träume von einer Suchfunktion für Rechnungen, die auf dem Hauptrechner im Netzwerk gespeichert sind. Für unsere großen Kunden ist das auch kein Problem, da ich diese Rechnungen aus der Datenbank heraus schreibe und auch abspeichere, es sind also alle Daten vorhanden, aus denen sich der Dateiname zusammensetzt.
Aber wir haben auch eien Anzahl kleinerer Kunden, die selten etwas bestellen und die (noch) nicht alle in der DB vertreten sind. Hier ist lediglich Rechnungs- und Kundennummer in der DB hinterlegt.
Ich bräuchte also soetwas wie einen Platzhalter für die Auftragsnummer (kann auch Wörter enthalten).
Versuche mit *, % oder Like scheiterten bisher allesamt.
Als wäre das nicht alles schon blöd genug, sind zudem nicht alle Rechnungen im .pdf-Format gespeichert, sondern einige (v.a. ältere) im .odt-Format... :roll:
Folgendes Makro funktioniert (eingeschränkt aufgrund der verschiedenen Formate) für unsere großen Kunden:

Code: Alles auswählen

Sub Rechnungoeffnen


oDatasource = thisComponent.CurrentController
	IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
	oConnection = oDatasource.ActiveConnection() 
CONST Suchpfad="file://Computer/Ordner/Unterordner/"


oSQL_Statement = oConnection.createStatement()
ReNr=RechnungSuchen.GetControl("NumericField1").Value

stSQL= "SELECT ""Auftragsnr"",""Kürzel"" FROM ""Zahlungen"",""Kunden"" WHERE ""Re-Nr""='"+ReNr+"' AND ""Kd-Nr.""=""Kunden_ID"""
oResult=oSQL_Statement.executeQuery(stSQL)
WHILE oResult.next
stAN= oResult.GetString(1)
stKd= oResult.GetString(2)
WEND
IF ReNr<2021165 THEN
Dateiname=Dir$ &Suchpfad & ReNr & stKd & stAN & ".odt" 
oShell=createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(Dateiname,,0)
END IF
IF ReNr>=2021165 THEN 
Dateiname=Dir$ &Suchpfad & ReNr & "  stKd  "& stAN & ".pdf"
oShell=createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(Dateiname,,0)
END IF
IF NOT EXISTS THEN
Dateiname=Suchpfad

oShell=createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(Dateiname,,0)
END IF

End Sub
Wobei allerdings der Ordner ("Suchpfad") immer mitgeöffnet wird, was aber nicht weiter stört.

z.B.

Code: Alles auswählen

 Dateiname=Dir$ &Suchpfad & Text LIKE "' ReNr' " 
führt zu der Meldung, dass "False" nicht gefunden werden konnte.

Gibt es eine Möglichkeit, für stAN und die Dateiendung einen Platzhalter zu setzen?
Das würde eine alte Frau (mich) sehr glücklich machen... ;)

Re: Dateien suchen und öffnen

Verfasst: Mi 11. Aug 2021, 20:52
von RobertG
Du brauchst doch einen Platzhalter für die Dateisuche. Was hat das dann mit Base zu tun?

Bei Deinem System dürfte der Platzhalter das '*' für beliebig viele Buchstaben sein. Ein '?' steht für lediglich einen Buchstaben.