vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
In 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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ß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel