Announcement

Collapse
No announcement yet.

2 selects hintereinander

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2 selects hintereinander

    Hallo
    Ich habe ein kleines Problem, was ich noch nicht verstehen kann ich hole mir
    mit einem select einen Satz aus einer Datenbank , ich habe die DataBindings
    direkt an das DataSet gehangen die Felder werde gefüllt alles super aber
    wenn ich mir den 2. Satz holen möchte (wo die nummer = 2 ist) wird mir der
    Satz nicht angezeigt d.h wenn ich das Programm schliesse und direkt den 2.
    Satz lade wird er mir angezeigt ich kann also nicht 2 mal einen select
    hintereinander abschicken sodaß die DataBindings von den Textboxen die am
    DataSet hängen gefüllt werden.Ich habe auch schon versucht das DataSet vor
    jedem Select einen clear zu zuweisen aber dann bekomme ich keine Ausgabe
    .Ich verstehe nicht warum .Nach jedem Abfragen wird das DataSet "normalerweise neu befüllt"
    mit dem Inhalt von dem jeweiligen Select .Ich habe eine kleine Klasse gebaut die mir den jeweiligen SQL zusammenbaut . Ich bin noch nicht so
    richtig im Thema aber ich weiß echt nicht warum das so ist.

    mein bisheriger code.

    private void button4_Click(object sender, System.EventArgs e)

    {

    string select = LI.selectlieferanten(Convert.ToInt32(numericUpDown 1.Value));

    odbcDataAdapter1.SelectCommand.CommandText = select;

    //Wenn ich vorher einen lieferantends1.Clear() aufrufe passiert leider gar
    nichts

    //lieferantends1.Clear();

    //DataSet füllen
    odbcDataAdapter1.Fill(lieferantends1.LIEFERANTEN);

    }

    -------auszug aus der klasse

    schnipp------------

    public string selectlieferanten(int LIEFERANTENNUMMER)

    {

    string selectlieferanten = "SELECT * FROM LIEFERANTEN WHERE
    LIEFERANTENNUMMER = ";

    int num = LIEFERANTENNUMMER;

    selectlieferanten += num;

    return selectlieferanten;

    }

    --------schnapp

    Würde mich für jede Holfe freuen ...

  • #2
    Hallo,

    es ist in jedem Fall besser, wenn die SELECT-Abfrage für die WHERE-Einschränkung einen Parameter verwendet. In einem anderen Beispiel sieht das so aus:
    <pre>
    SELECT
    Customers.*
    FROM
    Customers
    WHERE
    (Country = @Country)
    </pre>
    Wenn bei jeder neuen Abfrage das Ergebnis der vorherigen aus dem DataSet gelöscht werden soll, ist <b>Clear</b> schon der richtige Weg. Das könnte dann so aussehen:
    <pre>
    <b>private</b> <b>void</b> ComboBox1_SelectedIndexChanged(<b>object</b> sender, System.EventArgs e)
    {
    <font color="#003399"><i>// Parameter der SELECT-Abfrage zuweisen</i></font>
    SqlDataAdapter2.SelectCommand.Parameters[<font color="#9933CC">&quot;@Country&quot;</font>].Value = ComboBox1.SelectedValue;
    <font color="#003399"><i>// Inhalt der vorherigen SELECT-Abfrage aus dem DataSet entfernen</i></font>
    dataSetCustomers1.Clear();
    <font color="#003399"><i>// SELECT-Abfrage über den DataAdapter neu ausführen</i></font>
    SqlDataAdapter2.Fill(dataSetCustomers1, <font color="#9933CC">&quot;Customers&quot;</font>);
    }
    </pre&gt

    Comment

    Working...
    X