| |
VB.NET - FortgeschritteneIn SQLString soll eine eigene Funktion Werte ermitteln | | | Autor: Volker Bunge | Datum: 16.12.18 11:48 |
| Hallo zusammen,
ist es mit VB.net (2010 Express) möglich, einen SQLString zu erzeugen, in dem eine eigene Funktion weiterer Werte aus anderen Tabellen ermittelt, so dass diese Werte mit in dem SQLString stehen?
Ich schreibe gerade eine Access Datenbank in VB.Net neu und möchte die Abfragen gerne so übernehmen.
Aktuell stehe ich hier bei diesem Access-SQLString
SELECT Artikel.Barcode AS FilterBarcode, Artikelinformation_anzeigen([Artikel].[ID],"HerstellerKurzname") AS Kurzname, Artikel.ArtikelNr, Sum(Artikel_Belege.Stückzahl) AS AnzStückzahl, Artikel.Eingabemaske AS FilterEingabemaske, Artikelinformation_anzeigen([Artikel].[ID],"Bahngesellschaft") & " " & IIf(Artikelinformation_anzeigen([Artikel].[ID],"Unterrubrik 2")="kpl. Übersicht",Artikelinformation_anzeigen([Artikel].[ID],"Unterrubrik 1"),Artikelinformation_anzeigen([Artikel].[ID],"Unterrubrik 2")) AS Anzeige, Artikel.Barcodeaufkleberausdrucken AS FilterBarcodeaufkleberausdrucken, Artikelinformation_anzeigen([Artikel].[ID],"Baureihe") AS Baureihe, Artikelinformation_anzeigen([Artikel].[ID],"Betriebsnr") AS BetriebsNr, Artikel.BarcodeaufkleberOriginalbezeichnung
FROM Artikel LEFT JOIN Artikel_Belege ON Artikel.ID = Artikel_Belege.ArtikelID
GROUP BY Artikel.Barcode, Artikelinformation_anzeigen([Artikel].[ID],"HerstellerKurzname"), Artikel.ArtikelNr, Artikel.Eingabemaske, Artikelinformation_anzeigen([Artikel].[ID],"Bahngesellschaft") & " " & IIf(Artikelinformation_anzeigen([Artikel].[ID],"Unterrubrik 2")="kpl. Übersicht",Artikelinformation_anzeigen([Artikel].[ID],"Unterrubrik 1"),Artikelinformation_anzeigen([Artikel].[ID],"Unterrubrik 2")), Artikel.Barcodeaufkleberausdrucken, Artikelinformation_anzeigen([Artikel].[ID],"Baureihe"), Artikelinformation_anzeigen([Artikel].[ID],"Betriebsnr"), Artikel.BarcodeaufkleberOriginalbezeichnung
HAVING (((Artikel.Barcode)<>0) AND ((Artikel.Eingabemaske)=Eval("Forms!Eingabemaske!Eingabemaske")) AND ((Artikel.Barcodeaufkleberausdrucken)=-1));
Der Aufruf 'Artikelinformation_anzeigen(...' ist eine separate Funktion, die mir die Werte zurückliefern soll.
Jetzt meine Überlegungen / Wünsche
1. Natürlich einfach den Access-SQLcode nehmen und in VB.Net einfügen (wird aber wahrscheinlich so einfach nicht möglich sein)
2. Den SQLCode so umschreiben, dass er passt (aber wie?)
3. Das ganze über DataGridviews/Tabellen zu erledigen und diese dann einzeln durchzulaufen und mir die entsprechenden Werte herauszusuchen
Da meine Datenbank so einige Tabellen hat, sollte diese Lösung natürlich sehr leicht anzupassen sein.
Der Umstieg auf VB.Net ist der Geschwindigkeit von Access geschuldet und ich erhoffe mir mit VB.Net natürlich einen gewaltigen Geschwindigkeitsvorteil (und diverse andere natürlich auch). Daher sollte die Lösung eine recht schnelle sein.
Gibt es jemanden, der mir bei meinem Problem weiterhelfen kann bzw. mir eine kurze, verständliche Vorgehensweise (gerne natürlich auch mit Code) geben kann?
Vielleicht gibt es ja auch passende Videos bei Youtube, die mir weiterhelfen würden.
Vielen Dank
Volker | |
Re: In SQLString soll eine eigene Funktion Werte ermitteln | | | Autor: msSuper | Datum: 17.12.18 09:10 |
| Hallo Volker,
wie Du das mit Access bewältigen kannst, das weiß ich auch nicht.
Ich habe aus Geschwindigkeitsgründen und Stabilitätsgründen von Access auf SQL Server umgestellt und habe einen sehr deutlichen Performanceschub festgestellt.
Im SQL Server kann man zudem ziemlich einfach eigene Formeln und Funktionen anlegen und diese dann in der VB.NET Anwendung benutzen.
Beim SQL Server gibt es ja auch die Express Edition die mittlerweile riesengroße Datenbanken erlaubt, und wenn Du nur wenige Anwender im Netzwek hast ist das überhaupt kein Problem diese kostenlose Version zu benutzen.
Gruß | |
Re: In SQLString soll eine eigene Funktion Werte ermitteln | | | Autor: Volker Bunge | Datum: 18.12.18 17:44 |
| Hallo msSuper,
vielen Dank für die Antwort.
Werde mich mal die Tage einlesen bzw. ein paar Videos dazu ansehen.
Aber noch einmal grundsätzliche Frage
Der SQL-Server ersetzt Access hinsicht der Tabellen und Abfragen und VB.Net würde dann den Rest übernehmen. Habe ich das so erst einmal richtig verstanden?
Vielen Dank
Volker | |
Re: In SQLString soll eine eigene Funktion Werte ermitteln | | | Autor: norbert55 | Datum: 18.12.18 19:27 |
| In .Net kann man jedes SQL (und auch Access) Statement absetzen und erhält was man will zurück: eine Table, eine Row, einen Wert einer Zelle. Man kann auch Stored Procedures und Funktionen aufrufen. Man kann auch mit einem StringBuilder ein Statement zusammensetzen und dann ausführen lassen. Wenn Du Beispiele brauchst, kann ich Dir welche liefern.
Gruß Norbert
Beitrag wurde zuletzt am 18.12.18 um 19:31:16 editiert. | |
Re: In SQLString soll eine eigene Funktion Werte ermitteln | | | Autor: msSuper | Datum: 19.12.18 14:07 |
| Hallo Volker,
ja, hast Du schon richtig verstanden.
Ganz bestimmte Abfragen, kann man dann im SQL Server als Function anlegen und in den SQL Abfragen von VB.NET mit Parameterübergabe verwenden.
Zum Beispiel sowas hier:
BEGIN
declare @Output VARCHAR(255)
Set @output=''
Select @Output = case @Output
WHEN '' then convert(varchar(255),cBTA )
ELSE @Output + CONVERT (varchar(255),cBTA)
END
FROM tblBTAPosDetails
WHERE nAB=@nAB AND nPos=@nPos
Order by cBTA
RETURN @Output
END | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|