Zum Inhalt springen

Visual Studio 2008 / VB.NET / SQL-Server / select + benutzerdefinierte Funktion


Empfohlene Beiträge

Geschrieben

Hi @all!

Ich möchte gerne innerhalb eines VB.NET-Projekts in einem SQL-SELECT eine benutzerdefinierte Funktion verwenden. Diese Funktion wird etwas länger werden; eine Berechnung innerhalb des Statements ist dadurch nicht möglich.

Module »Modulname«

    Public Function »MeineFunktion«(ByVal »Argument« As »Datentyp«) As »Datentyp«

        »Anweisungen«

    End Function

End Module
In MS-Access kann ich gut damit arbeiten: SELECT »MeineFunction«(»Tabellenfeld«) AS »Spaltenname« FROM »Tabellenname« "»MeineFunktion«" ist in einem Modul definiert. Jetzt sind einige Fragen offen. Die beiden folgenden sind für mich die drängensten: 1. Es sollen Datenbankwerte gelesen und geschrieben werden. Muß ich ein bestimmten Projekttypen verwenden? (Bisher habe ich mich an "Windows-Forms-Anwendungen" probiert und konnte z.B. Tabellen auslesen. 2. Welche Möglichkeit gibt es, eine benutzerdefinierte Funktion in einem SQL-Statement zu verwenden, das dann an den SQL-Server übergeben wird? Diese benutzerdefinierte Funktion soll sich im VB-Projekt befinden. (Es gibt anscheinend auch die Möglichkeit, solche Funktionen im MS SQL Server Management Studio zu erstellen/verwalten? Das möchte ich allerdings vermeiden, weil bei einer Weitergabe bestimmt nicht an diese Bestandteile gedacht wird...)
Dim con As New OleDb.OleDbConnection

Dim cmd As New OleDb.OleDbCommand

Dim reader As OleDb.OleDbDataReader


con.ConnectionString = "Provider=SQLOLEDB;Initial Catalog=»Datenbankname«;Data Source=»...«;User ID=»...«;Password=»...«;"

cmd.Connection = con

cmd.CommandText = "SELECT »MeineFunction«(»Tabellenfeld«) AS »Spaltenname« FROM »Tabellenname«"
Der o.g. Code erzeugt folgende Fehlermeldung (ex.Message): "»MeineFunktion« wird nicht als integrierte Funktion erkannt." Wie kann ich diese Funktion integrieren? Das folgende Beispiel stammt aus der MSDN ("Erstellen von benutzerdefinierten SQL Server-Funktionen / Öffnen Sie ein vorhandenes SQL Server-Projekt, oder erstellen Sie ein neues.")
Imports System.Data.SqlTypes

Imports Microsoft.SqlServer.Server


Partial Public Class UserDefinedFunctions


    Public Const SALES_TAX As Double = 0.086


    <SqlFunction()> _

    Public Shared Function addTax(ByVal originalAmount As SqlDouble) As SqlDouble


        Dim taxAmount As SqlDouble = originalAmount * SALES_TAX


        Return originalAmount + taxAmount

    End Function

End Class

Diesen Code kann ich nur in einem "SQL Server-Projekt" verwenden?

Anm.: Ich vermute, ich stehe noch ziemlich am Anfang.

Vielen herzlichen Dank.

  • 1 Monat später...
Geschrieben

Hallo piomode1,

bin ein Leidensgenosse.

Steige gerade von VBA und Delphi auf Visual Studio 2008 um.

Es sieht so aus, dass einige Selbstverständlichkeiten der Vergangenheit nicht mehr funktionieren.

Bekomme bei Anwendung einer eigenen Funktion, die einfach nur einene Wert an die Abfrage übergeben soll, die gleiche Fehlermeldung (Abfrage unter TabelAdapter definiert).

Ich hoffe, dass "piomode1" sich bereits einen Wissensvorsprung erarbeitet hat.

Wäre dankbar für jede Information. Muss in den nächsten Tagen eine Lösung finden.

Sollte mir der Kronleuchter vorher aufgehen, dann schicke ich selbstverständlich eine Info.

Danke für die Aufmerksamkeit.

Viele Grüsse

Gerd77

14. Juli 2009

Geschrieben
Diesen Code kann ich nur in einem "SQL Server-Projekt" verwenden?

ja, denn die UDFs liegen ja *am* sql server.

aufrufen kann man sie dann natürlich aus jedem anderen VB.NET/C#-projekt.

man muss aber kein sql server projekt machen, man kann UDFs auch mit dem management studio anlegen.

s'Amstel

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...