DataGrid Spalte Hinzufügen

So leude ich mal wieder… ^^
Also … ich habe ein Datagrid die Source meines RecordSets gegeben.

Nun will ich wissen wie ich diesem DataGrid im nachhinein noch eine Spalte hinzufügen kann. Das heisst quasi

DataGrid1 = RS1 + RS2
RS2 währe in diesem falle eine weitere Spalte


ODER

cmdGetMatch.CommandText = „SELECT KHKKontokorrent.Matchcode FROM KHKKontokorrent RIGHT OUTER JOIN KHKArtikel ON KHKKontokorrent.Kto = KHKArtikel.Letzterlieferant WHERE KHKArtikel.Letzterlieferant = ‚& LetzterL &‘“
Set rsLetzterLieferant = cmdGetMatch.Execute
With LLFTtxt
.DataField = rsLetzterLieferant.Fields(„Matchcode“).Name
Set .DataSource = rsLetzterLieferant
End With

So hab ich mir das gedacht. Ich kann ja einen Recordset auch wenn er nur EINEN expliziten wert zurückliefert keiner TextBox oder string zuweisen.

Wie bekomme ich diesen einen wert aus dem Recordset heraus damit er in der TextBox dargestellt werden kann?

Ich hoffe mir kann nochma wer helfen ^^ danke :smile:

Hallo,

Also … ich habe ein Datagrid die Source meines RecordSets
gegeben.

Nun will ich wissen wie ich diesem DataGrid im nachhinein noch
eine Spalte hinzufügen kann.

Gar nicht. Das datagrid zeigt Dir Dein Recordset, mehr nicht. Wenn Du noch eine Spalte mehr haben willst, mußt Du entweder die Datenbank ändern oder ein anderes Steuerelement nehmen. Mit dem Flexgrid würde das gehen.

Das heisst quasi

DataGrid1 = RS1 + RS2
RS2 währe in diesem falle eine weitere Spalte


ODER

cmdGetMatch.CommandText = „SELECT KHKKontokorrent.Matchcode
FROM KHKKontokorrent RIGHT OUTER JOIN KHKArtikel ON
KHKKontokorrent.Kto = KHKArtikel.Letzterlieferant WHERE
KHKArtikel.Letzterlieferant = ‚& LetzterL &‘“
Set rsLetzterLieferant = cmdGetMatch.Execute
With LLFTtxt
.DataField = rsLetzterLieferant.Fields(„Matchcode“).Name
Set .DataSource = rsLetzterLieferant
End With

So hab ich mir das gedacht. Ich kann ja einen Recordset auch
wenn er nur EINEN expliziten wert zurückliefert keiner TextBox
oder string zuweisen.

Du kannst den Inhalt des Feldes aber in die Textbox schreiben.

Text1.Text = rsLetzterLieferant(0)
Text1.Text = rsLetzterLieferant(„Matchcode“)

Gruß, Rainer

Da kommt bei mir ein Fehler. Und Zwar:
„Entwerder BOF oder EOF ist True, oder der Aktuelle Datensatz wurde gelöscht. Der Angeforderte Vorgang benötigt einen aktuellen Datensatz.“

Woran kanns liegen? Ich habs jetz mit Command.Execute gefüllt und nochmal mit With RS.Source=SQLStr.

Bei beiden kommt das. Was mach ich nur Falsch?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Da kommt bei mir ein Fehler. Und Zwar:
„Entwerder BOF oder EOF ist True, oder der Aktuelle Datensatz
wurde gelöscht. Der Angeforderte Vorgang benötigt einen
aktuellen Datensatz.“

Woran kanns liegen? Ich habs jetz mit Command.Execute gefüllt
und nochmal mit With RS.Source=SQLStr.

Bei beiden kommt das. Was mach ich nur Falsch?

ich zerpflücke erst mal Deinen Code … :smile:

cmdGetMatch.CommandText = „SELECT KHKKontokorrent.Matchcode FROM KHKKontokorrent RIGHT OUTER JOIN KHKArtikel ON KHKKontokorrent.Kto = KHKArtikel.Letzterlieferant WHERE KHKArtikel.Letzterlieferant = ‚& LetzterL &‘“

Du schreibst einen SQLString als Text in cmdGetMatch.

Set rsLetzterLieferant = cmdGetMatch.Execute

Du öffnest das Recordset ‚rsLetzterLieferant‘ wenn in ‚cmdGetMatch.Execute‘ ein SQLString steht. Verstehe ich nicht. Was ist cmdGetMatch?

With LLFTtxt
.DataField = rsLetzterLieferant.Fields(„Matchcode“).Name
Set .DataSource = rsLetzterLieferant
End With

Und nun willst Du den namen des Feldes „Matchcode“ in LLFTtxt.Datafiled schreiben. Gibt es in dem Recordset ein Feld „Matchcode“? Wenn ja, lautet der Name den Du übergibst „Matchcode“, dafür mußt Du keine Datenbank öffnen um den String „Matchcode“ zu schreiben.

Bei mir würde das so aussehen, wenn ich den Inhalt eines Feldes schreiben wollte:

Option Explicit
Dim Db As Database 'Datenbank deklarieren
Dim Rst As Recordset 'Recordset deklarieren

Private Sub Form\_Load()
 Set Db = OpenDatabase("C:\TestDB.mdb") 'Datenbank verbinden
 Set Rst = Db.OpenRecordset("SELECT \* FROM Tabelle1") 'Recordset öffnen
 Rst.MoveFirst 'zum ersten Datensatz
 Me.Caption = Rst(0) 'Feld Null des Datensatzes anzeigen
End Sub

reden wir über die selbe Programmiersprache? Oder bin ich schon wieder mal in die Falle ‚VBA‘ getappt? :smile:

Gruß, Rainer

Hallo digitalfreak,

hab das nicht ganz verstanden aber:

Kenn das zwar nur in c#, sollte aber in VB ähnlich sein.

Einem Datagrid ordne ich eine Table zu, die ich per SQL gelesen habe. Fehlt eine Spalte (hier für einen Suchindex):

col = new DataColumn[1];
col[0] = childTable.Columns[„id“];
childTable.PrimaryKey = col;
childTable.AcceptChanges();

Außerdem könntest du einfach in deinem SQL ein zusätzliches Feld abfragen:

Select echteColumn, nochnFeld = ‚ätsch‘ from tabelleName where …

Damit haste direkt eine zusätzliche Zelle,

Oder willst du nur den Wert aus dem recordset auslesen?

Probier mal rs[0] oder so. Solche Sachen haben meist einen Indexer. Per Debug mal ein Watch drauf und das Objekt mal anschauen …

mfg

Dirk.Pegasus

Ich denke wir reden über die selbe Programmiersprache. :smiley:
Ich habe es jetz hinbekommen.

Es funktioniert wunderbar! :smile: Jetz fehlen nur noch n paar Filter die ich einbauen will und dann hat sich die ganze Geschichte.

Das was bei mir seltsamerweise nicht funktioniert bis jetz ist:
Code zu trennen und mit Leerzeicen _ in der nächsten zeile Fortzusetzen habs auch schon mit " _ &" ProBIERt. Aber nix geht. Macht nix habs jetz in einzelne Variablen geschrieben und die mit & zu einem String zusammen geführt.

Das 2. Was nich ging ist aus einem RS den ersten wert mit zb: RS(0) auszulesen. Da geht nur RS(Matchcode) als beispiel.

Ich hab n Seltsames VB das ist anscheinend n monatgs VB :smiley:

Danke nochma für deine / eure mühe ich denk ich werd nochmal ne frage haben aber immo nich :smile:

Gruß der digi ^^

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]