Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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...

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.