Excelwerte auslesen und unbekannterweise Überschreiben

  • Allgemein

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Excelwerte auslesen und unbekannterweise Überschreiben

    Ich lese in Form1 eine Excel Tabelle aus. Die Spalten A bis D und Zeile zeile 2 bis 101. Die werte werden an verschiedene Veariablen gegeben und dann in 4 Comboboxen gelistet.
    Wenn ich auf einen button drücke, öffnet sich eine Form2 mit 4 Textboxen und einen Buttom zum Änderungen speichern. Der inhalt dieser Textboxen, ist der gleiche der in der combobox ausgewählt wurde.
    Bsp: In Combobox1 ist der ausgewählte Inhalt ein "Hallo", in Combobox2 ein "test", in Combobox3 "Nacht"und in combobox4 steht "Welt"
    Damit steht in Textbox1 "Hallo", in Textbox "test", in Textbox3 "Nacht" und in Textbox4 steht "Welt".

    Mein Problem ist folgendes:
    Wenn ich den Inhalt von Textbox1 ändere, wie speicher ich das dann in excel. Die Tabelle nach dem Wert hallo zu durchsuchen bringt mir nichts, da dieser ca 10 mal vorkommt.

    Ich versuche es mal noch genauer zu sagen:
    Ich möchte das die über form2 der inhalt der Comboboxen/der exceltabelle geändert wird. Nur weiß ich nicht, aus welcher spalte oder zeile der ursprungswert kommt und möchte diesen ersetzen.

    Ich weiß es klingt verwirrend, ist im grunde aber ganz einfach. Ich sitze vermutlich nur schon zu lange daran.
    Und ja ein quellcode oder ein grooßer anstoss wäre mir am liebsten

    ?( ?( ?( ?(
    Hi.

    Hier der Denkanstoß: Excel-Dateien können wie Datenbanken verwendet werden. Das bedeutet, dass du mit dem richtigen Datenprovider auf die Tabelleninhalte zugreifen kannst. Den Provider (für den ConnectionString) findest du über die Boardsuche ("datagridview excel"). Wenn du die "Verbindung" hergestellt hast, kannst du das Steuerelement "BindingNavigator" verwenden, um in den Datensätzen zu navigieren. Wenn du dann noch die entsprechenden Spalten über die DataBindings der Controls an die ausgelesene Tabelle bindest, hast du in kürzester Zeit eine Anwendung nach deinen Wünschen, ohne eine Zeile Code geschrieben zu haben.

    Mehr Informationen über den BindingNavigator findest du im Buch "Visual Basic 2005 - Das umfassende Handbuch" auf S. 1122f. (kostenlos, online, inkl. Beispiel) und im MSDN. Im VB-Handbuch kannst du noch weitere ADO.NET-Kenntnisse erwerben, falls dir "DataBindings" noch nicht geläufig ist.
    Gruß
    hal2000
    Vielen Dank für den Denkanstoß. Leider ist die Methode im o.g. genannten Buch für einen SQL-Server/Datenbank. Die Kapitel habe ich durchgelesen und komme im Moment trotzdem noch nicht weiter. Hättest du noch einen Tipp oder Code für mich?
    Du könntest eine mehrspaltige Combobox machen, die in einer Extraspalte die Adresse
    der Zelle beinhaltet, aus der der Combobox-Wert stammt. Wenn jemand diesen
    Wert in der Combobox anklickt weißt du ja in welcher Zeile der Combobox das war.
    Wenn er jetzt die TextBox geändert hat schreibst du den geänderten Wert zurück
    in die Tabelle mit Hilfe der Adresse aus der Combobox. Dann wirst du wohl die
    Combobox leeren und neu laden müssen.
    @Gerry:
    Das Buch gibt als Beispiel nur den SQL-Server an. In Wirklichkeit hängt es aber vom Datenprovider ab, welche Quellen du verwenden kannst. Ein MS-OLEDB-Provider kann z.B. Excel-Mappen und Access-Datenbanken ansprechen, während ein MySQL-Provider auf MySQL-Datenbanken spezialisiert ist. Alle im Buch vorgestellten Methoden funktionieren unter Angabe der richtigen Verbindungszeichenfolge auch mit Excel-Mappen.

    Edit: Ich habe das Ganze mal selbst ausprobiert - es gibt eine kleine Hürde im VisualStudio-Assistenten. Der akzeptiert zwar Excel-Dateien, kann aber keine Schemainformationen generieren. Es geht trotzdem, wenn du eine leere Access-Datenbank erstellst und die Excel-Tabelle(n) darin verlinkst. Die Access-Datenbank vermittelt, sodass der Assistent abgeschlossen werden kann.

    Also hier nochmal die Schritte:
    - Access-Datenbank erstellen
    - Excel-Tabelle verlinken ("Externe Daten")
    - BindingNavigator, Textbox und BindingSource hinzufügen
    - BindingSource-Datenquelle angeben ("neu erstellen")
    - Access-Datei auswählen, DataSet aus den gewünschten Tabellen generieren
    - BindingSorce dem BindingNavigator zuweisen
    - DataSource-->Text der TextBox auf die gewünschte Spalte einstellen
    - Projekt erstellen & starten.
    Gruß
    hal2000

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()