Abfrage auf ID welche jedoch "zerlegt" werden muß

Terasilimon

Neuer Benutzer
Beiträge
3
Hallo zusammen und schon mal vorab Danke für Euer Interesse an meinem "kleinen" Problem.

Ich habe folgendes Abfrageproblem:

Ein Lager wird wie folgt dargestellt:

Tabelle: Fach-ID / Belegt / Lot-Nr. / Menge / ..../


Fach_Id :4101001011
4101001012
4101001021
4101001022
und so weiter, fortlaufend, aufsteigend

In den Abfragen sollen Dateninhalte bestimmter Zeilen-Felder jeweils der Paarung mit den Endziffern 1-2, miteinander verglichen werden.

In Lagerplatz 4101001011 muss gleiches Material (Lot-Nr. Zahlenwert) stehen wie in Lagerplatz 4101001012
In Lagerplatz 4101001011 darf kein Material stehen, wenn Lagerplatz 4101001012 leer ist.
In Lagerplatz 4101001011 muß gleiche Materialmenge vorhanden sein wie in Lagerplatz 4101001012

Nun zu meinem Problem. Wie gestalte ich eine passende Abfrage (vor allem für den Report Builder 3.0), um mir die entsprechenden Zeilen der Tabelle anzeigen zu lassen.
Die Abfrage sollte am Besten automatisch eine Lagererweiterung, und somit auch eine Tabellenerweiterung mitmachen können. Es würde lediglich die Anzahl an Fach_Id's erweitert.


MfG

Terasilimon
 
Werbung:
Ich hab keine Ahnung was ein Report Builder 3.0 sein soll... :)
Aber das hier zeigt dir z.B. alle "Fachgruppen" bei denen ungleiche belegt-Status, ungleiches Material oder ungleiche Mengen, etc. vorhanden sind...
Code:
Select substring(fach_id, 1, 9) as fach_gruppe
From lager
Group By substring(fach_id, 1, 9) having count(*) > 1
Einfach gesagt: Es zeigt dir eine Fachgruppe an, sobald IRGENDETWAS von fach1 nicht mit fach2 übereinstimmt...

Wenn du etwas anderes haben willst, solltest du evtl. deine Bitte etwas genauer definieren...
 
Erst mal Danke an Distrilec, Deine Antwort hat schon mal die passende Anregung gebracht.

Zur besseren Darstellung kurz erklärt: Laderoboter --> Fach 1---Fach 2
Fach 1---Fach 2
etc.
da die Fächer hintereinander liegend angeordnet sind, muss Fach 1 leer sein, um Fach 2 anfahren zu können.

Fachbelegung
Abfragelogik: Fach 1 = 0 & Fach 2 = 1 ist richtig
Fach 1 = 1 & Fach 2 = 1 ist richtig
Fach 1 = 1 & Fach 2 = 0 ist falsch

Material in Fachbelegung:

Abfragelogik: Fach 1= 0 & Fach 2 =0 ist richtig
Fach 1 = 0 & Fach 2 = Material A ist richtig
Fach 1 = Material A & Fach 2 = Material A ist richtig
Fach1 = Material B & Fach 2 = Material A ist falsch

derzeit fehlt mir die Idee (und Anwendungserfahrung), wie ich dies in dem MS-Report Builder 3.0 gescheit in die Abfragefelder einbauen kann.
 
Wenn ich dich richtig verstehe suchst du ja nur falsch belegte Fächer, das ginge z.B. so:
Code:
SELECT   t1.*,
     t2.*
FROM   tabelle t1
LEFT JOIN tabelle t2
ON     substring(t1.fach_id,1,9) = substring(t2.fach_id,1,9)
AND     substring(t2.fach_id,9,1) = substring(t1.fach_id,9,1) + 1
WHERE   t1.belegt = 1
AND     t2.belegt = 0

Für die Materialbestimmung fehlt mir der Tabellenaufbau aber das geht eigentlich equivalent.
 
Ist echt nett von Euch, das ihr mir die Syntax und Logik hier erklärt. Wie gesagt, mir steht der Report Builder zur Verfügung, sonst nix. Ich komm nicht via DBMS an die Datenbank ran, sondern muss mir die von einem Reportserver ziehen.
Daher meine dringlichste Frage, wie bekomme ich die Syntax in dem MS-Report Builder 3.0 für MS-SQL-Server 2008 R2 umgesetzt. Leider habe ich bislang nichts genaues an Antworten gefunden. Und ja^^ ich habe gegoogelt...

MfG
Tera
 
Basieren die Reports des Report Viewers nicht auch auf einem SQL Select Statement? Würde mich wundern wenn es anders wäre, helfen kann ich dir aber mit dem Viewer nicht. Ich würde annehmen er holt sich die Daten per Select und bereitet Diese dann optisch auf.
 
Werbung:
Hallo Tera,

man muss nicht zwingend der ReportBuilder benutzen. Man kann sich auch die Client-Komponenten des SQL Servers installieren. Hierzu gehört auch eine spezielle Version des Visual Studio, die mit installiert werden kann. Diese nennt sich "SQL Server Business Intelligence Development Studio". Das Arbeiten mit Visual Studio hat an dieser Stelle den Vorteil dass man sich ein Projekt anlegen kann, womit auch eine Versions-Historie möglich ist. Mit dem ReportBuilder wird ein Bericht direkt in der Datenbank des Report Servers gespeichert.

Aber nun zur Antwort auf deine Frage. Wenn der ReportBuilder gestartet ist, findet man auf der linken Seite eine Navigations-Spalte mit Punkten, die mit einem Ordner-Icon voran angezeigt werden.
Einer dieser Punkte heißt "Datenquellen". Mit Rechts-Klick kann eine neue Datenquelle eingerichtet werden. Das sollte man aber nur machen wenn man diese Datenquelle nur für diesen einen Bericht benötigt. Ansonsten sind freigegebene Datenquellen zu bevorzugen, da diese für mehrere Berichte genutzt werden können!

Nach anlegen der Datenquelle kann man nun ein Dataset anlegen. In diesem Dataset wird die SQL-Anweisung, die du vorher am Besten im SQL Server Management Studio vorbereitet und getestet hast, eingefügt.
Das Dataset verweist auf die zuvor angelegte Datenquelle, womit dann der Verweis zwischen SQL-Abfrage und der SQL Server Instanz festgelegt ist.

Dieses Dataset kannst du dann in einem grafischen Element (Tabelle, Matrix, Diagramm etc.) hinterlegen, womit dir dann die Daten zur Darstellung und auch für weitere Berechnungen innerhalb dieses Elements verfügbar sind.

Der Report Server ist wesentlich mächtiger als viele glauben. Es gibt auch an vielen Stellen Fallstricke zu beachten, die man nicht über "learning by doing" auf die Reihe bekommt.
Vielleicht solltest du in Betracht ziehen hier eine Schulung zu besuchen, wenn du das beruflich machst.

Viele Grüße,
Tommi
 
Zurück
Oben