@Joe_515c88 posted a new topic, subject "SQL to String ?". It read:

   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

@Anno74 replied

    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

So @Joe_515c88 replied

    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

@Anno74 replied

    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
    [code] 
        DeineVariable=DeinWert
        
    [/code]
    
    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
    [code] 
        DeineVariable=DeineDatatable.Item(DeinDatensatz).DeinFeld
        
    [/code]
    
    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
    [code] 
        'DT ist hier eine Datatable, Name =das Feld welches angezeigt werden soll
        Label1.DataBindings.Add("Text", DT, "Name")
        
    [/code]
    
    MfG Alex

To which @Joe_515c88 replied

    Ich habe sowas von kein plan davon   
    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.

To which @Anno74 replied

    Hallo Joe,
    
    jeder hat einmal angefangen 
    
    > Ich habe sowas von kein plan davon   
    >  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
    [code] 
        Select \*FROM XYZ WHERE FELD LIKE Textbox1.text 
        
    [/code]
    
    zusammen. Denn dann kommen wir an einen Punkt, der SQL Injektion 
    
    > 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 
    
    MfG Alex

To which @Joe_515c88 replied

    > Hallo Joe,
    > 
    > jeder hat einmal angefangen 
    
    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 
    
    > 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://816-734-2409/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 
    
    DAs wäre wahrscheinlich zu einfach 
    
    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 !

After which, @Anno74 added

    > 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://816-734-2409/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 
    
    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.
    [code] 
        DeinGrid.DataSource=DEINEDATABLE
        
    [/code]
    
    Ansonsten wenn es immernoch nicht läuft, dann poste mal bitte Deinen Source.
    
    MfG Alex

After which, @Joe_515c88 added

    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

So @Anno74 replied

    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 
    
    MfG Alex

Then @Joe_515c88 said

    mit dem DataTable passt nun fast alles.  
    Besten Dank nochmal


{'source': 'discourse', 'url': 'https://www.wer-weiss-was.de/t/sql-to-string/6254589', 'title': 'SQL to String ?', 'views': 752, 'has_accepted_answer': False, 'word_count': 2524, 'like_count': 0, 'reply_count': 9, 'participant_count': 2, 'posts': 11, 'tags': '', 'author': '@Joe_515c88', 'participants': '@Joe_515c88, @Anno74', 'image_url': [None], 'created_at': '2011-01-07T21:46:15.000Z', 'last_posted_at': '2011-01-10T22:21:18.000Z'}