Daten aus der Datenbank auslesen

psychomama

Mitglied
Guten Morgen,

Ich habe ein Problem und verwende VB.NET.
In meinem Formular habe ich eine ganze Reihe von Radiobuttonlists, so ca. 30 Stück mit jeweils 5 Radiobuttons. Alle haben den selben Value(B1,B2,B3,B4,B5). In meiner Datenbank ist für jeden einzelnen Radiobutton ein Text hinterlegt. Dieser soll mir nach dem Klicken auf den jeweiligen Radiobutton, von der Datenbank dann in ein Textfeld geladen werden. So dass ich am Schluss in dem Textfeld so ungefähr 30 Sätze(für jede Radiobuttonlist einer)habe.
Ich habe leider zurzeit noch keine Ahnung, wie ich das Problem lösen soll. Hoffe ihr könnt mir weiterhelfen.

Danke schonmal im Vorraus:)
 
Code:
Private Sub radioButton_Click(sender As Object, e As EventArgs)
    Dim rb As RadioButton = DirectCast(sender, RadioButton)
    ...
    "SELECT MeinText FROM MeinerTabelle WHERE MeineID='" + rb.Value + "'"
    ...
End Sub



Private Sub radioButton_CheckedChanged(sender As Object, e As EventArgs)
    Dim rb As RadioButton = DirectCast(sender, RadioButton)
    
            
    If rb.Checked Then
        ...
        "SELECT MeinText FROM MeinerTabelle WHERE MeineID='" + rb.Value + "'"
        ...
    End If
    
End Sub
:confused:

Du solltest etwas genauer werden.
 
Zuletzt bearbeitet:
Ja es ist wirklich nicht einfach zu verstehen):
Ich hab mal eine Datei hinterlegt mit einem Screen, der das ganze deutlicher machen soll.
Hoffentlich ist es nun verständlicher!
 

Anhänge

  • Radiobuttonlist.jpg
    Radiobuttonlist.jpg
    70,8 KB · Aufrufe: 30
Also, ich wüsste ja, wie ich es in VB6 machen würde (Ich nix Ahnung von .NET).

Auf jeden Fall in der Datenbank die Texte mit zwei Koordinaten hinterlegen
Bsp.
Koord1 - Koord2 - Text
0 - 0 - Ich bin der Text in Zeile 0 und Spalte 0
0 - 1 - Ich bin der Text in Zeile 0 und Spalte 1
usw.

Falls .NET es zulässt --> zweidimensionales ControlArray
Falls nicht (wie in VB6):
150 Radio-Buttons als Control-Array erstellen

Bei Click auf einen RadioButton wird der Index des geclickten Buttons mit im Click-Event übergeben.

Um die Koordinate des geclickten Buttons zu ermitteln, muss man dann den Index des geclickten Buttons ganzzahlig durch 5 Teilen (ergibt die Zeile) bzw. den Index per Mod-Operator (Rest-Berechnung) durch 5 teilen (ergibt die Spalte).

Bsp. RadioButton(3) wurde geclickt (Der Index beginnt ab 0 zu zählen) --> Zeile 0 - Spalte 4

3 ganzzahlig durch 5 ergibt 0 -> Zeile=0
3 mod 5 ergibt 3 -> Spalte=3

Der Rest ist dann einfach:
SQLString="SELECT Text From MeineTabelle WHERE Koord1=" & Zeile & " AND Koord2=" & Spalte

txtTextfeld.Text=myRecordset("Text")

eventuell halt noch ein CRLF dazu klemmen, dass man eine neue Zeile erhält usw.
 
Arrggg, Mist. Geht so nicht als 150er-Array, da dann immer nur ein Radio-Button angewählt sein kann.

Muss man dann etwas anderst machen:
30 Frames (von mir aus ohne Rand) als ControlArray
Innerhalb jedes Frames ein 5er-ControlArray von RadioButtons.

Du musst dann halt eine Funktion coden
Visual Basic:
Public Function GetTextFromDB(Koord1 as Integer, Koord2 As Integer) As String
SQLString="SELECT Text From MeineTabelle WHERE Koord1=" & Koord1 & " AND Koord2=" & Koord2
GetTextFromDB=myRecordset("Text")
End Function

'Aufruf aus dem Click-Event des jeweiligen RadioButton-Arrays
Private Sub RadioButton_Click(Index As Integer)
Koord1=RadioButton(Index).Parent.Index   'Oder so ähnlich, ich zieh es mir gerade aus dem Ärmel -> Der Parent ist in dem Fall der passende Frame
Koord2=Index
txtTextFeld=GetTextFromDB(Koord1,Koord2)
End Sub
 
habs leider immer noch nicht..):

und zusätzliches noch ein weiteres Problem. Ich muss das ganze Formular, dass man im Screenshot sieht, dynamisch machen. Dh. der ganze Text im Formular ist in der Datenbank hinterlegt, wenn jemand etwas in der DB ändert, wird es auch im Formular geändert. Damit auch der Adminbenutzer nicht immer zu mir rennen muss, wenn er einen kleinen mini Text geändert haben will.
Irgendwas sollte mit PlaceHoldern gehen denke ich mal, aber habe noch keinen Ansatz, wie ich das anstellen soll...
 
Aus dem Bauch heraus: Zwei zusätzliche Tabellen in der DB
1. Tabelle --> RowText -> beinhaltet den Text der in den Zeilen links stehen soll
Über den RecordCount aus "SELECT * FROM RowText" bekommst du dynamisch die Anzahl Zeilen die dargestellt werden sollen
2. Tabelle --> ColumnText -> beinhaltet den Text der oben senkrecht über den Spalten steht.
Über den RecordCount blablabla --> analog siehe 1.

Wie du da allerdings die Verknüpfung zwischen Zeile und ausgewählter Spalte zustande bringst weiss ich nicht, da ich die Aufgabenstellung nicht kenne
 
Hallo "Mama",

wie wäre es denn, wenn du dir ein UserControl baust das für jede Auswahl die Aktionen selber handelt? Dem Control kannst du die entprechenden Texte übergeben und bei einem klick auf den Radiobutton den entsprechenden Text anzeigen. Die Methode zum initialisieren könnte ungefähr so aussehen (C# Code, VB ist nicht meine Stärke, Sorry):

Code:
public void Initiliaze(string groupName, string groupDescription, string[] selectedValueList)

groupName -> "Planung/Organisation",
groupDescription -> "plant / organisiert...."
selectedValueList -> Array mit 5 Feldern in dem Feld 1 den Text enthält der angezeigt wird wenn RadioButton1 geklickt ist, Feld 2 Text für RadioButton2, usw...

Damit sparst du dir ne Menge Abfragen auf den Server.

Die Frage ist auch: Wie schaut deine Tabelle aus in der du die DAten hast die du anzeigen/auswählen lassen möchtest
 
Ich verstehe so ungefähr was du meinst M4st3r, aber könntest du deine Code vllt noch ein bisschen ausführen, bin noch nicht so ein Profi

Die Tabelle zeig ich auchmal!
 

Anhänge

  • DB.jpg
    DB.jpg
    176,9 KB · Aufrufe: 19
Ich kann mal meine gedanken konkretisieren, erstellen von UserControls musst du dich selbst durchkämpfen, das hab ich im moment nicht im Kopf:

Zunächst einmal musst du dir ein Control zusammenbauen welches folgende Controls auf der Oberfläche besitzt:

- Label für Kriterium
- Label für Beschreibung
- Label für den Text des ausgewählten RadioButton
- 5 RadioButtonList-Steuerelemente die alle in der gleichen Gruppe sind

Dem Control spendierst du die oben beschriebene Methode "Initialize" mit der Möglichkeit die Parameter ID, Gruppe, Kriterium, Beschreibung (alle vom Typ string) sowie RadioButtonDescription als String-Array.

In der Methode weist du die Werte den entsprechenden Properties zu, registrierst für die RadioButtons den Clicked-Event (Wenn der denn so heißt).

Im Eventhandler bekommst du dann raus welcher RB geklickt wurde und kannst den entsprechenden Text im Label anzeigen
 

Neue Beiträge

Zurück