piomode1 Geschrieben 9. Juni 2009 Geschrieben 9. Juni 2009 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. Zitieren
Gerd77 Geschrieben 14. Juli 2009 Geschrieben 14. Juli 2009 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 Zitieren
Gateway_man Geschrieben 14. Juli 2009 Geschrieben 14. Juli 2009 Hier mal ein Paar infos über eine sql querry : Klick mich. Allerdings bin ich mir nicht sicher ob Access alle befehle unterstützt. Zitieren
Amstelchen Geschrieben 15. Juli 2009 Geschrieben 15. 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 Zitieren
Empfohlene Beiträge
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.