Anzeige

Datenbank über Button hochzählen


werner_sg

Erfahrenes Mitglied
#1
Hallo nach Jahren der Abstinenz mal wieder VB und anscheinend alles verlernt :(

Mein Problem oder Frage, ich möchte in einer Datenbank mittels Button in der Form in der Datenbank hochzählen lassen.

Beispiel: Button 1 wird gedrückt dann soll das Datenbank Feld Button 1 um einen Zähler erhöht werden.

Sicher mehr als simple, aber war jetzt seit fast 6 Jahren nicht mehr drann und habe da irgendwie ne Blockade
 

werner_sg

Erfahrenes Mitglied
#2
Echt keiner Plan :(

Code:
    Private Sub Button1_MouseDown(sender As Object, e As MouseEventArgs) Handles Happy.MouseDown
        B1 = B1 + 1
Code:
Public Class Anfang

    Private HappyClick As String
    Private NeutralClick As String
    Private notHappyClick As String

    Private B1 As Integer = 0
    Private B2 As Integer = 0
    Private B3 As Integer = 0
weiter komme ich dezeit nicht

Google rauf und runter von einem Forum zum andern alles zu finden aber nicht was ich suche. Ansätze in allen Varianten für Excel für Spiele und in allen Sprachen, kann doch nicht sein das keiner was weis.

Möchte ja nicht das Script geschrieben bekommen.

Nun dann werde ich mich morgen wohl mal zur Bücherei begeben vieleicht ist da in einem der alten Handbücher eine Ansatzweise Hilfe zu finden, hier siehts ja derzeit leider mau aus.

trotzdem Danke für alle die reingeschaut haben für die Interesse.
 

werner_sg

Erfahrenes Mitglied
#3
Aufgeben kommt nicht in Frage und wer braucht schon schlaf:confused:

Habe es erstmal mit ner Ausgabe in Label versucht er reagiert zeigt aber nur 0 an

Code:
Public Class Anfang

    Private HappyClick As String = B1.ToString()
    Private NeutralClick As String = B2.ToString()
    Private notHappyClick As String = B3.ToString()

    Private B1 As Integer
    Private B2 As Integer
    Private B3 As Integer

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        B1 = 0
        B2 = 0
        B3 = 0

    End Sub


    Private Sub Button1_MouseDown(sender As Object, e As MouseEventArgs) Handles Happy.MouseDown
        B1 = B1 + 1
        Label1.Text = HappyClick

    End Sub
 

Spyke

Capoeirista
Premium-User
#4
Erstmal, nicht sofort schreien wenn nicht sofort eine Antwort kommt.
Ich z.B. schau nur einmal frühs vor der Arbeit hier im Forum rein, den rest des Tages meist nicht mehr.

Und willst du ein Feld in einer Datenbank hochzählen
oder dein privates Feld B1 und dies im Label1 anzeigen?

Da es eher nach Anzeige in Label1 ausschaut.
Dein HappyClick ist ein Feld welches du einmal zu Beginn mit B1 zugewiesen hast.
Entweder HappyClick stellst du um auf eine Eigenschaft welche den Wert von B1 zurück gibt, oder du zeigst gleich B1 im Label1 an.

Nachtrag (Eigenschaften-Prozeduren in VB .NET):
https://msdn.microsoft.com/de-de/library/bb978934.aspx
 
Zuletzt bearbeitet:

werner_sg

Erfahrenes Mitglied
#5
Danke Spyke
(hatte aber doch gar nicht geschrien war nur verwundert weil waren ja schon einige hier und du bist ja nicht dafür da hier alle Fragen im Forum zu beantworten)

Nun weiter zum Thema

Es soll in eine Datenbank gespeichert werden, den Label hatte ich nur zum einfacheren Test gesetzt

Dein Hinweis hat Funktioniert das Umwandeln als String war gar nicht Notwendig:)

Dann schau ich jetzt mal das ich das ganze vom Label in die Datenbank bekomme.
 

werner_sg

Erfahrenes Mitglied
#6
Guten Morgen Spyke;)

so schauts aus
Code:
Public Class Anfang


    Private B1 As Integer
    Private B2 As Integer
    Private B3 As Integer

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        B1 = 0
        B2 = 0
        B3 = 0

    End Sub


    Private Sub Button1_MouseDown(sender As Object, e As MouseEventArgs) Handles Happy.MouseDown
        B1 = B1 + 1
        Label1.Text = B1

    End Sub
    Private Sub Button2_MouseDown(sender As Object, e As MouseEventArgs) Handles neutral.MouseDown
        B2 = B2 + 1
        Label2.Text = B2
        Ursache1.Show()
        Me.Hide()
    End Sub
der Zähler ins Label funktioniert 1a

das ganze Datenbank Chaos habe ich wieder getilgt, die gute MS Seiten haben mich jetzt ganz vom Pfad abgebracht springen dort von Datatable zu dataset über Datagrid und wieder zurück und noch wo anders vorbei. irgendwie schien mir das im VB Express (2008) alles einfacher.

Wie ich Daten aus einem Datagrid auslese und eventuelle Änderungen wieder speicher ist mir bekannt von früher,
eine weiter Form mit Datagrid zum Auslesen habe ich ja im Projekt und das funktioniert auch.

Nur ich habe leider keinen Nachvollziehbaren Ansatz gefunden die Aktuelle Klickzahl in die Access Datenbank zu schreiben

Das Dataset1 habe ich noch in der Form gelassen

Wäre sehr lieb wenn Du mir nochmal so einen guten Hinweis zu vorgehensweise lieferst
 

Spyke

Capoeirista
Premium-User
#7
Vergiss einfach DataSet.
Erstell dir ein DbCommand als CommandType Text und führ deine eigenen SELECT, INSERT und UPDATE Statements aus.

Schnell bissl was gegooglt was bissl helfen könnt:

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dbconnection-dbcommand-and-dbexception

https://social.msdn.microsoft.com/F...h-c-to-select-from-access?forum=csharpgeneral

Nachtrag:
Hab vor Jahren aufgehört DataSets zu verwenden, deshalb könnt ich da aufn ersten Blick erstmal nichts zu sagen.
 

werner_sg

Erfahrenes Mitglied
#8
Hallo Skype

jetzt bin ich total durch:confused:

davon funktioniert gar nichts habe mich vorhin nochmal in die Bibliothek gesetzt aber die haben ja auch nichts aktuelles da:(

ich arbeite mit Visual Studio 2017

auch die anderen Codes von MS durfte ich erst mal vom Syntax her ändern weil sonst gemeckert wird

kann man nicht eventuell die erzeugte Zahl in eine Text Datei abspeichern würde mir auch reichen.
 

werner_sg

Erfahrenes Mitglied
#9
Nachtrag: die Nachvolziehbarkeit der Muster von MS scheitern schon daran das die Tabellen Strucktur der Nordwind Datenbank von der in allen Beispielen verwendeten Northwind Datenbank welcher nur als SQL zu finden ist stark abweicht die verwendete Tabelle Region ist bei mir schon mal gar nicht vorhanden:(
 

werner_sg

Erfahrenes Mitglied
#11
Nicht noch mehr von MS die machen mich fertig:-]

OK hier der Code
Code:
Imports System
Imports System.IO
Public Class Daten


    Private B1 As Integer

    Private Sub Abfrage_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        B1 = 0

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        B1 = B1 + 1
        Label1.Text = B1
        Dim path As String = "c:\temp\MyTest.txt"
        If File.Exists(path) = False Then
            ' Create a file to write to.
            Using sw As StreamWriter = File.CreateText(path)
                sw.WriteLine("hier mus Ergebnis B1 rein")
                sw.Flush()
            End Using
        End If

        ' Open the file to read from.
        Using sr As StreamReader = File.OpenText(path)
            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
        End Using

    End Sub

End Class
Auf Button Click erfolgt die Ausgabe in die Textdatei aber immer nur das was gerade im Code steht auch überschreibt er derzeit nicht

wie bekomme ich jetzt den erzeugten Wert in die Textdatei quasi die selbe situation wie mit der Datenbank:)
und warum überschreibt er nicht die vorhandene er legt nur neu an
 

werner_sg

Erfahrenes Mitglied
#12
So habe es noch mal überarbeitet soweit ich Infos gefunden habe :)

Code:
Imports System
Imports System.IO
Public Class Daten


    Private B1 As Integer

    Private Sub Abfrage_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'B1 ist beim Start immer 0 hier muss beim starten der letzte Wert aus der zugeordneten Zeile rein

        B1 = 0

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        B1 = B1 + 1
        Label1.Text = B1


        ' Zugriff auf Inhalt von Label1.Text
        Dim text As String = Label1.Text

        ' Pfad zum Ordner eigene Dateien
        Dim mydocpath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Schreibt die Datei.
        File.WriteAllText(mydocpath & Convert.ToString("\Happy.txt"), text)

        ' es fehlt noch die Möglichkeit in eine bestimmte Zeile zu schreiben ohne den Rest zu verändern
    End Sub

End Class
Es wird wieder etwas klarer ;) aber es fehlt noch was bis zum kompletten Durchblick
 
Anzeige

Neue Beiträge

Anzeige