Parox
Neuer Benutzer
- Beiträge
- 3
Hallo miteinander,
ich habe mir die letzten 2-3 Wochen etwas SQL beigebracht, da ich auf der Arbeit den Nutzen von queries in Verbindung mit unserem ERM System entdeckt habe.
Ich bin dementsprechend noch klar Anfänger, viel mehr als "select - from - where" beherrsche ich noch nicht.
Mein Problem ist nun folgendes:
In unserem System bekommen Kunden / Lieferanten eine eigene Konto-Nummer (für die FiBu) zugeteilt, diese sind fortlaufend in einem Zahlenbereich je nach Art dess Kontakts und Anfangsbuchstabe, zB 20100-20199 für Kunden, welche mit A beginnen, 80500-80599 für Lieferanten mit E.
Aus dem System heraus ist nicht klar ersichtlich, welches die nächste freie Nummer ist, daher wollte ich eine .dqy erstellen, welche mir in einem Excel Feld die nächste freie Nummer für den jeweiligen Buchstaben- und Kontakttyp ausgibt.
-> Datei aufrufen, Parameter 1 eingeben (D oder K für Debitor oder Kreditor), Parameter 2 eingeben für den Anfangsbuchstaben.
Die relevanten Datenbanken wären zB "kunde" und "name", in "kunde" sind mit kdn_lfdnr die laufende Nummer, kdn_typ der Typ (D oder K) und kdn_kontonr die Kontonummer für FiBu hinterlegt, in "name" unter n_name_001 der Name des Kontakts, n_lfdnr die laufende Nummer.
Bisher sieht meine Abfrage wie folgt aus:
SELECT k.kdn_kontonr AS Kontonummer, n.n_name_001 AS Name FROM kunde k, name n WHERE (k.kdn_lfdnr=n.n_lfdnr) AND (k.kdn_typ=?) ORDER BY k.kdn_kontonr
die nun Ausgegebene Tabelle enthält eine Auflistung der Kontakte (je nach Parametereingabe D oder K) mit der Kontonummer und dem Namen, z.B
Kontonummer Name
20100 Axxxx1
20101 Axxxx2
etc...
Meine Fragen:
erstes Ziel: wie kann ich einen Parameter setzen, der bei Eingabe eines Buchstabens alle Felder ausgibt, welche mit diesem Buchstaben beginnen? also zB A% für alle mit A beginnenden. Ich hatte verschiedene Varianten von "LIKE" versucht, keine brachte ein Ergebnis (Syntax Fehler oder leere Ausgabe)
zweites Ziel: ist es möglich, die nächste freie Zahl in einer Buchstabengruppe auszugeben, nachder ich diesen Buchstaben als Parameter gesetzt hatt? z.B. Parameterangabe A, 20100 - 20141 sind belegt, die Abfrage gibt den wert 20142 aus (die nächste freie Nummer).
um das ganze noch zu erschweren kommt das Beste zum Schluss: während wir die Nummern aufsteigend vergeben, geschieht dies (selten, aber es kommt vor) in der Buchhaltung absteigend, also bei A von 20199 -> 20198, 20197, ... Ich habe zwar noch wenig Durchblick, aber ich denke, dass ich erst die Zahlenbereiche für die Buchstaben zuordnen muss (in der Abfrage, geht nicht in der Tabelle), und dann die nächsthöchste freie (oder belegte) ausgeben könnte - das wird etwas schwerer, wenn zB die ersten 20 und letzten 3 belegt sind. (zB. 20100 - 20120 und 20197 - 20199 für A)
noch zur Info: ich arbeite mit .dqy MS Queries über Excel, welche ich aber fast immer in einem Editor (MS oder VIM) bearbeite. Die Datenbank soll laut Hersteller mit den Befehlen von SQLite 3.0 vertraut sein.
Falls mir hier jemand hefen könnte wäre ich sehr dankbar - aber auch ein "geht nicht" wäre hilfreich ...
ich habe mir die letzten 2-3 Wochen etwas SQL beigebracht, da ich auf der Arbeit den Nutzen von queries in Verbindung mit unserem ERM System entdeckt habe.
Ich bin dementsprechend noch klar Anfänger, viel mehr als "select - from - where" beherrsche ich noch nicht.
Mein Problem ist nun folgendes:
In unserem System bekommen Kunden / Lieferanten eine eigene Konto-Nummer (für die FiBu) zugeteilt, diese sind fortlaufend in einem Zahlenbereich je nach Art dess Kontakts und Anfangsbuchstabe, zB 20100-20199 für Kunden, welche mit A beginnen, 80500-80599 für Lieferanten mit E.
Aus dem System heraus ist nicht klar ersichtlich, welches die nächste freie Nummer ist, daher wollte ich eine .dqy erstellen, welche mir in einem Excel Feld die nächste freie Nummer für den jeweiligen Buchstaben- und Kontakttyp ausgibt.
-> Datei aufrufen, Parameter 1 eingeben (D oder K für Debitor oder Kreditor), Parameter 2 eingeben für den Anfangsbuchstaben.
Die relevanten Datenbanken wären zB "kunde" und "name", in "kunde" sind mit kdn_lfdnr die laufende Nummer, kdn_typ der Typ (D oder K) und kdn_kontonr die Kontonummer für FiBu hinterlegt, in "name" unter n_name_001 der Name des Kontakts, n_lfdnr die laufende Nummer.
Bisher sieht meine Abfrage wie folgt aus:
SELECT k.kdn_kontonr AS Kontonummer, n.n_name_001 AS Name FROM kunde k, name n WHERE (k.kdn_lfdnr=n.n_lfdnr) AND (k.kdn_typ=?) ORDER BY k.kdn_kontonr
die nun Ausgegebene Tabelle enthält eine Auflistung der Kontakte (je nach Parametereingabe D oder K) mit der Kontonummer und dem Namen, z.B
Kontonummer Name
20100 Axxxx1
20101 Axxxx2
etc...
Meine Fragen:
erstes Ziel: wie kann ich einen Parameter setzen, der bei Eingabe eines Buchstabens alle Felder ausgibt, welche mit diesem Buchstaben beginnen? also zB A% für alle mit A beginnenden. Ich hatte verschiedene Varianten von "LIKE" versucht, keine brachte ein Ergebnis (Syntax Fehler oder leere Ausgabe)
zweites Ziel: ist es möglich, die nächste freie Zahl in einer Buchstabengruppe auszugeben, nachder ich diesen Buchstaben als Parameter gesetzt hatt? z.B. Parameterangabe A, 20100 - 20141 sind belegt, die Abfrage gibt den wert 20142 aus (die nächste freie Nummer).
um das ganze noch zu erschweren kommt das Beste zum Schluss: während wir die Nummern aufsteigend vergeben, geschieht dies (selten, aber es kommt vor) in der Buchhaltung absteigend, also bei A von 20199 -> 20198, 20197, ... Ich habe zwar noch wenig Durchblick, aber ich denke, dass ich erst die Zahlenbereiche für die Buchstaben zuordnen muss (in der Abfrage, geht nicht in der Tabelle), und dann die nächsthöchste freie (oder belegte) ausgeben könnte - das wird etwas schwerer, wenn zB die ersten 20 und letzten 3 belegt sind. (zB. 20100 - 20120 und 20197 - 20199 für A)
noch zur Info: ich arbeite mit .dqy MS Queries über Excel, welche ich aber fast immer in einem Editor (MS oder VIM) bearbeite. Die Datenbank soll laut Hersteller mit den Befehlen von SQLite 3.0 vertraut sein.
Falls mir hier jemand hefen könnte wäre ich sehr dankbar - aber auch ein "geht nicht" wäre hilfreich ...