SQL to String ?

Hallo Zusammen
Ich habe folgenden Code:

Dim SQLString AS String
SQLString = „Select item.name, item.date from Item where Item.Id = 1“
SqlDatasource1.SelectCommand = SqlString

nun möchte ich den wert aus Item.name in eine Variable schreiben oder direkt ein ein Label. Im Moment schreibe ich die ganze abfrage in ein Gelxgrid. das ist aber zu unübersichtlich.
kann mir da jemand helfen ?

mfg jonny

Hallo,

Hallo Zusammen
Ich habe folgenden Code:

Dim SQLString AS String
SQLString = „Select item.name, item.date from Item where
Item.Id = 1“
SqlDatasource1.SelectCommand = SqlString

Was soll dabei rauskommen? Item.Name, Item.Date und Item.ID wird .NET nicht kennen. Bei Option Strict On solltest du auch darauf hingewiesen werden.

Wo kommen denn die Daten her? In welcher Variablen stecken Sie denn?
Handelt es sich zufaellig bei Item um ein DataRowView? mit den Feldern Name, Date, ID ?

nun möchte ich den wert aus Item.name in eine Variable
schreiben oder direkt ein ein Label. Im Moment schreibe ich
die ganze abfrage in ein Gelxgrid. das ist aber zu
unübersichtlich.

Wenn es bei Item um ein DataRowView handelt, so kannst Du dein Label an das DataRowView binden. Ansonsten

Deine Variable = DeinWert
Oder
DeinLabel.Text=DeinWert

kann mir da jemand helfen ?

Ja sicher, nur kann die Antwort nur so gut sein, wie die Frage :s

mfg jonny

MfG Alex

Guten Tag,

Also mit der Select abfrage bekomme ich eine zeile (3 Spalten) also 3 Werte die durch si zuweisung automatisch in flexgrid geschrieben werden.
wenn ich nun aber nur ein Feld aus der SQL Datenbank lesen will und das in eine String Var packen möchte?
Also so
Label1 = SqlDatasource1.Selectcommand = „Select item.name, item.date from Item where
Item.Id = 1“

wie stelle ich das an ?
also die Datasource íst ein sql tabelle

Hallo

Guten Tag,

Also mit der Select abfrage bekomme ich eine zeile (3 Spalten)
also 3 Werte die durch si zuweisung automatisch in flexgrid
geschrieben werden.

Dann hast du es hier falsch gepostet. Aber sei es drum

wenn ich nun aber nur ein Feld aus der SQL Datenbank lesen
will und das in eine String Var packen möchte?

Möglichkeiten gibt es viele:smile:

Also so
Label1 = SqlDatasource1.Selectcommand = „Select item.name,
item.date from Item where
Item.Id = 1“

wie stelle ich das an ?
also die Datasource íst ein sql tabelle

Na was denn nun ? Eine Variable oder ein Label?
Nehmen wir mal an. Du hast Deine Datatable. Nennen wir sie mal DT. Diese hast du ja gefüllt, mittels der Methode Fill von deinem Adapter und an das Grid gebunden, richtig?

Welchen Wert willst du denn nun aus der Tabelle DT in eine Variable schreiben? Immer den aktuellen, oder den ersten etc.? Eine Tabelle kann mehr wie nur ein Row enthalten( Je nach Abfrage)!

Um einen Wert einer Variablen hinzuzufügen, machst du das wie folgt

DeineVariable=DeinWert

Deine Datatable hat eine Methode Item. Wenn du diese aufrufst bekommst die DataRow zurück. Als Parameter übergibst du ihr welche du möchtest. Aus der Wiederrum kannst du dann dein entsprechendes Item abfragen.

Wie genau das geht, dazu brauch man mehr Informationen, wie zum Bsp. Du an die Daten ran kommst. Ob du Typgerecht arbeitest etc.

Im besten Falle würde es dann so ausschauen

DeineVariable=DeineDatatable.Item(DeinDatensatz).DeinFeld

Willst du aber hingegen, was auch meine Vermutung ist, es so haben das du im Label, immer zum Bsp. das Feld Name aus der Datatable angezeigt bekommst, egal welcher Datensatz gerade aktiv ist, so kannst du das auch über diesen Weg bewerkstelligen, was aber umstaendlich ist, da du immer darauf reagieren musst wenn sich der Datensatz wechselt. Besser ist es wenn du in diesem Falle das Label, direkt an die Datatable bindest.

Das Wiederrum könnte wie folgt ausschauen

'DT ist hier eine Datatable, Name =das Feld welches angezeigt werden soll
Label1.DataBindings.Add("Text", DT, "Name")

MfG Alex

Ich habe sowas von kein plan davon :confused:
Ich habe einfach eine neue ASPX Seite erstellt Visual Studio 2008 und eine SQL DataSource mit dem WIzard eingefügt. hier einen SQL String eingetragen und das GridView mit der DataSource verlink.
nun habe ich noch eine Textbox eingefügt um einen Wert im SQL String ändern zu können . Das klappt auch alles… ABer ich brauche nun die einzelnen Felder in Variablen. Ich habe nur die SQLDataSource. mehr nicht. Und hier wäre es gut wenn ich die komplette Rückgabe nach dem Select in der Variable Input1 wiederfinden könnte. Ich kann es leider nicht besser beschreiben. Da alles neu für mich ist.

Hallo Joe,

jeder hat einmal angefangen :smile:

Ich habe sowas von kein plan davon :confused:
Ich habe einfach eine neue ASPX Seite erstellt Visual Studio
2008 und eine SQL DataSource mit dem WIzard eingefügt. hier
einen SQL String eingetragen und das GridView mit der
DataSource verlink.

Gut, schau mal rechts ob da einen Eintrag findest der mit xsd endet.

nun habe ich noch eine Textbox eingefügt um einen Wert im SQL
String ändern zu können .

Ok, ich hoffe du bastelst dann deinen SQL String nicht via

Select \*FROM XYZ WHERE FELD LIKE Textbox1.text 

zusammen. Denn dann kommen wir an einen Punkt, der SQL Injektion :frowning:

Das klappt auch alles… ABer ich
brauche nun die einzelnen Felder in Variablen.

Ok, aber warum brauchst du bindend die Daten in Variablen?
Welche Daten sollen denn in den Variablen stehen? Eine Datatable kann je nach Select Statement mehr wie nur 1 Row (Zeile, mehrere Datensaetze) enthalten!
Wie schaut deine Tabelle in der Datenbank aus?

Ich habe nur
die SQLDataSource. mehr nicht. Und hier wäre es gut wenn ich
die komplette Rückgabe nach dem Select in der Variable Input1
wiederfinden könnte.

Du kannst zum Bsp. den aktuellen Row der Datenbank ermitteln und diese dann in eine Variable vom Typ DataRowView schreiben. Aber was sollte das bringen? Wozu brauchst du die Daten in der Variable Input1 ?

Ich kann es leider nicht besser
beschreiben. Da alles neu für mich ist.

Versuche einfach mal meine Fragen zu beantworten :smile:

MfG Alex

Hallo Joe,

jeder hat einmal angefangen :smile:

Danke das du die Hoffung nicht aufgibst!

Gut, schau mal rechts ob da einen Eintrag findest der mit xsd
endet.

Ok, ich hoffe du bastelst dann deinen SQL String nicht via

Der Sitring funktioniert ganz gut.
Query1 = „SELECT item.serial_no, item.descr FROM ap_attachments WHERE item.serial_no = '“ & TextBox1.Text & „’“

zusammen. Denn dann kommen wir an einen Punkt, der SQL
Injektion :frowning:

Ok, aber warum brauchst du bindend die Daten in Variablen?
Welche Daten sollen denn in den Variablen stehen? Eine
Datatable kann je nach Select Statement mehr wie nur 1 Row
(Zeile, mehrere Datensaetze) enthalten!
Wie schaut deine Tabelle in der Datenbank aus?

So schaut das erbenis der Select abfrage aus
http://94.125.27.17/soda/default.aspx
Das ist aber nicht schön. Ich muss hier das erbenis mit Label und Textbox verschönern. dazu brauche ich die Daten in einem Array oder über einen Filter If row2,Field3 = 1345 then Var1 = row2,Field5

Du kannst zum Bsp. den aktuellen Row der Datenbank ermitteln
und diese dann in eine Variable vom Typ DataRowView schreiben.
Aber was sollte das bringen? Wozu brauchst du die Daten in der
Variable Input1 ?

Eine row wird nichts bringen das ich die Daten aus mehreren Tabellen zusammenstricke. Also müsste ich das Ergebnis der Select abfrage irgendwie auswerten können.

Versuche einfach mal meine Fragen zu beantworten :smile:

DAs wäre wahrscheinlich zu einfach :frowning:

Als schummellösung hätte ich noch den gedanken die Daten aus dem Gridview zu lesen aber auch hier finde ich kein Beispielt.
Also Var1 = Gridview.Rows(2).Cell1.tostring

Danke !

Danke das du die Hoffung nicht aufgibst!

Also heute haben ich nocht Zeit. Die Nacht dann muss ich aber auf Arbeit und komme erst Donnerstag oder Freitag wieder :s

Gut, schau mal rechts ob da einen Eintrag findest der mit xsd

Query1 = „SELECT item.serial_no, item.descr FROM
ap_attachments WHERE item.serial_no = '“ & TextBox1.Text & „’“

Ok, Deine Daten sind also in der Tabelle ap_Attachements
Poste mal bitte den Source den Du ausführst nach dem klicken auf den Button!

So schaut das erbenis der Select abfrage aus
http://94.125.27.17/soda/default.aspx

Das ist aber nicht schön. Ich muss hier das erbenis mit Label
und Textbox verschönern. dazu brauche ich die Daten in einem
Array oder über einen Filter If row2,Field3 = 1345 then Var1 =
row2,Field5

Nein, eben das brauchst Du nicht! Du kannst die Daten direkt aus der Datatable lesen und deinen Elementen zuweisen. Aber dazu musst Du auf jeden Datensatz Änderung reagieren! Sicher würde das gehen. Aber warum so schwer machen? Erstelle Dir einfach Deine Steuerelemente auf dem Formular und binde diese an Deine Datatable!

Eine row wird nichts bringen das ich die Daten aus mehreren
Tabellen zusammenstricke. Also müsste ich das Ergebnis der
Select abfrage irgendwie auswerten können.

Wenn Du Daten mittels einer Select Abfrage ermittelst, so landen diese immer in einer Datatable. Willst du nun einen Datensatz aus der Datatable haben, so ist dies immer ein DataRowView!

DAs wäre wahrscheinlich zu einfach :frowning:

Versuche mal folgendes.
Erstelle mal ein Label (Label1) und eine Textbox (Textbox1) auf Deinem Formular. Beim laden der Daten (Dort wo du auch das Grid an die Datenbank bindest) füge mal folgende Zeilen ein.

TextBox.Databindings.Add(„Text“,DeineDatatable,„ap_short_text“)
Label1.DataBindings.Add(„Text“,DeineDatatable,„ap_description“)

In dem Falle solltest Du in der Textbox den Short_Text und im Label den Description lesen, vom aktuellen Datensatz.
Wenn Du nicht weisst wie sich deine Datatable schimpft, dann schaue mal nach folgendeder Zeichenkette.

DeinGrid.DataSource=DEINEDATABLE

Ansonsten wenn es immernoch nicht läuft, dann poste mal bitte Deinen Source.

MfG Alex

Der Komplette Code:
Partial Public Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim Query1 As String
Query1 = „SELECT address.address_1, address.city, address.zip, address.longitude, address.latitude, address.last_change_date, ap_attachments.ap_attachment_id, ap_attachments.ap_description, ap_attachments.ap_short_text, item.serial_no, item.descr FROM ap_attachments INNER JOIN ap_attachments_xref ON ap_attachments.ap_attachment_id = ap_attachments_xref.ap_attachment_id INNER JOIN address_xref ON ap_attachments_xref.table_key = address_xref.table_key INNER JOIN address ON address_xref.address_id = address.address_id INNER JOIN item ON address.address_id = item.address_id WHERE item.serial_no = '“ & TextBox1.Text & „’“
SqlDataSource1.SelectCommand = Query1

Ich habe auf der Form eine SQLDataSource eingerichtet und im GridView als Source diese ausgewählt.
Das resultat hast du ja gesehen.

Text1.Databinding gibt es nicht ? nur Text1.Bind. ich teste noch etwas

Hallo Joe,

Ok, ich tippsle mit Vb.Net rum. Dort gibt es diese Eigenschaft. Aber schaue Dir mal bitte genauer an, welche Parameter Bind von Dir erwartet! Alternativ schaue mal in dem Eigenschaftsfenster von der Textbox nach. Dort kannst Du auch die Bindung festlegen. Dann musst du das nicht schreiben :smile:

MfG Alex

mit dem DataTable passt nun fast alles.
Besten Dank nochmal :stuck_out_tongue: