Hallo,
Ich möchte einen TableAdapter erstellen, mit welchem man dynamisch die Tabellen aussuchen kann.
Das SQL Statement sollte ungefähr so aussehen:
SELECT * FROM @Tabelle AS Tabelle WHERE Tabelle.Name = @Name
Allerdings bekomme ich eine Fehlermeldung zurück, wenn ich die Variable @Tabelle benutze.
Gibt es irgendeine Möglichkeit, die Tabelle mittels Variablen auszusuchen?
Danke für jede Hilfe!!
übergib doch einfach einen string als tabellennamen
ungefähr so:
@"SELECT * FROM " + meinTabellenname + " WHERE .... ";
"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."
Hallo,
Wohin übergeben? Der SQL Query befindet sich innerhalb eines DataAdapters. Das Statement in diesem Data Adapter tu ich schon vor dem Compile festlegen.
@Tabelle sollte eigentlich ein String sein, den der TableAdaptor automatisch einfügen sollte.
Also ich selber arbeite mit Ole.
Wenn Du einen OleDataAdapter hast kannst Du den command Text setzen.
cmd.CommandText = "SELECT * FROM " + tableName;
dataAdapter.SelectCommand = cmd;
dataTable = new DataTable();
dataAdapter.Fill(dataTable);
Hab jetzt net überprüft obs bei "normalen" DataAdapter auch so geht. Aber wenn net steig einfach auf Ole um 😉.
Yunky: was fürn operator muss ich den nehmen wenn ich sagen will nichtgrößergleich??
Yunky: !>3??
Yunky: !≥ ??
Puppetmaster: G
Yunky: aja ka
Puppetmaster: kleiner (<)
Yunky: stimmt^^
Danke für den Tip, ich wollte es jedoch nicht auf C# Ebene machen, sondern ich möchte dem TableAdapter (oder der Datenbasis auf irgendeine Art und Weise) einen Parameter übergeben. Die Datenbasis schau dan selbst, wie sie den Parameter einsetzt.
Ich habe jetzt folgende StoredProcedure erstellt:
CREATE PROCEDURE dbo.GetConfiguration
(
@type varchar(MAX)
)
AS
IF @type = 'Tanque' SELECT * FROM Tanque();
Diese gibt dann eine Tabelle zurück. Doch wie kann ich diese im Code benutzen?
CREATE FUNCTION dbo.Configuration
(
@type varchar(max)
)
RETURNS TABLE
AS
RETURN SELECT * FROM GetConfiguration '@type'
... funktioniert natürlich nicht 😦