| |
Allgemeine DiskussionenBet-Tracker programmieren | | | Autor: DreamerXY | Datum: 28.02.19 06:56 |
| Hallo Community,
wie in der Überschrift schon steht, möchte ich gern einen Bet-Tracker programmieren.
Ich Wette regelmäßig auf Fussball Ereignisse und protokolliere diese mit Excel.
Jetzt würde ich gern das ganze mit VB realisieren.
Es sollen Daten wie Datum,Liga,Spiel,Tipp,Quote,Einsatz,Gewinn,Verlust usw... in einer Datenbank gespeichert werden mit denen anschließend eine Statistik erstellt wird wie zb. eine monatliche Gewinnübersicht, eine jährliche Gewinnübersicht usw..
Wie könnte ich das am besten realisieren?
Man bekommt sehr viele Informationen über VB + Datenbank.. aber welche für mein Vorhaben geeignet ist kann ich nicht sagen. Wäre da eine Datenbank mit Access sinnvoll? Kann ich diese über VB einlesen und mit den Daten arbeiten?
Mit freundlichen Grüßen,
Markus | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 28.02.19 08:23 |
| Hallo!
Natürlich kannst Du mit VB eine Datenbank verwalten.
Aber zunächst mußt Du eine prinzipielle Entscheidung treffen:
Willst Du direkt innerhalb von MS-Office mit den dort vorhandenen
Mitteln arbeiten - oder willst Du mit der Programmierumgebung VB
eine Anwendung erstellen, die auf eine Datenbank (z.B. Access,
SQL-Compact) zugreift. | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 28.02.19 19:54 |
| Hallo,
ich möchte mit VB eine Anwendung erstellen die mit einer Datenbank wie zB Access arbeitet. Jetzt ist meine Frage, ich damit das alles realisieren kann. Datenbank füllen und mit den Daten eine Statistik ausgeben.
Dann bräuchte ich eure Erfahrung, mit was ich das am besten mache, Access, SQL, andere alternative? Es kommt halt eine Menge an Daten pro Jahr zusammen.
Gruß
Markus | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 01.03.19 10:28 |
| Du stellst eine allgemein formuliert Frage und erwartest
konkrete Hinweise? Das funktioniert nicht.
Zunächst ist eine ganze Reihe von Details zu klären:
Datenquelle:
Von wo werden die zu verarbeitenden Daten abgefragt:
Internet-Seite, Cloud-Datenbank, heruntergeladene Daten-Dateien, ...
Soll eine Zusammenführung aus verschiedenen Datenquellen erfolgen?
Wie komplex sind die Validierungs- und Konvertierungsaufgaben,
die beim Laden und Aufbereiten anfallen?
Daten-Aktualisierung:
Wie oft müssen die Daten aktualisiert werden?
Welche Datenmengen betrifft der Anhang bzw. Austausch?
Handelt es sich z.B. um tausende Datensätze, die täglich neu ankommen
oder nur um einige hundert Datensätze pro Woche?
Gibt es Spitzenzeiten mit besonders hohem Datenaufkommen?
Müssen die neuen Daten mit den bereits vorhandenen Daten abgeglichen
oder kombiniert werden? Wie aufwändig ist das?
Archivierung/Datenvolumen:
Für welche zurückliegenden Zeiträume müssen die Datensätze
aufbewahrt werden? Welche Brutto-Datenmenge kann dabei zusammenkommen?
Wie häufig sind BackUps/Komprimierungen der Datenarchive vorgesehen?
Wo sollen diese Daten dauerhaft abgelegt werden (Medium/Ort)?
Daten-Nutzung:
Wie komplex sind die Funktionen zur Aufbereitung der Daten
(einzubeziehende Datenmenge und Rechenzeitbedarf)?
Sind z.B. statistische Verlaufs-Analysen für längere Zeiträume geplant?
Wie schnell müssen aktuelle Kennwerte und Charts erstellt und
aktualisiert werden? Nahezu Echtzeit?
Welche Nutzer sollen Zugriff auf die Daten haben? Ist ein Remote-
Zugriff geplant? Wie viele solcher Zugriffe müssen in Spitzenzeiten
bewältigt werden? | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 01.03.19 16:42 |
| Hallo Manfred,
Danke erstmal für deine Antworten.
Mir war es nicht bewusst, dass es so Aufwendig wird, daher hab ich die Frage ganz einfach gehalten.
Als Laie hab ich da leider nicht die Ahnung/Erfahrung, daher musste ich ja irgendwie anfangen.
Zur Zeit trage ich die Daten in eine Excel Tabelle ein:
-Spalten
Datum/Liga/Begegnung/Quote/Einsatz/Tipp/Gewinn.Verlust/Bank
Pro Spiel wird 1 Zeile gefüllt. Pro Monat komme ich auf 200-300 Einträge (Zeilen)
In einer zweiten Excel Tabelle führe ich eine Statistik. Einfache Berechnungen.
Dabei werden die Gewinne/Verluste pro Monat und Jahr aufgelistet, damit ich einen Überblick behalte.
Außerdem werden Einzahlungen und Auszahlungen protokolliert.
Das war es schon im ganzen.
Ich dachte, ich könnte einfach eine Datagridview füllen (zB. mit einer Datenbank die ich mit Access erstelle) und diese Daten auswerte. Ich weis nicht ob diese ganzen "Sachen" die du beschrieben hast, notwendig sind. Soll eine einfache Datenbank sein mit meinen Wetten. Speichern und Laden und hinzufügen von Einträgen.
Gruß
Markus | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 01.03.19 17:32 |
| Hallo!
Es geht bei meinen Fragen nicht darum, die Sache aufwendig zu machen,
sondern darauf hinzuweisen, was alles bedeutsam sein kann, um zu
einer sinnvollen Entscheidung zu kommen.
So wie Du Deinen Anwendungsfall schilderst, kannst Du das Programm
relativ einfach gestalten.
Du kannst Office- oder Excel- Tabellen über in VB.Net vorhandene
Klassen z.B. in eine Datatable laden und sie an ein DatagridView-
Control binden.
Wenn du den - in die VB-Entwicklungsumgebung integrierten - OR-Designer
verwendest, kannst Du das Grundgerüst Deiner Anwendung eventuell
weitgehend automatisiert erstellen lassen.
Die Foren-Suchmaschine liefert zahlreiche Beispiele für die Nutzung
eines Dataset bei einer lokalen Datenbank.
Stichworte: Dataset, Jet-Treiber, Bindingsource, Sqlparameter, ...
Ein etwas älteres, einfaches Beispiel zum Einstieg:
http://openbook.rheinwerk-verlag.de/einstieg_vb_2012/1959_08_001.html#dodtp63c0001b-811d-4409-b2ed-cc50ac4d4ad8 | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 02.03.19 00:10 |
| Hallo,
ich habe jetzt mal angefangen und hänge bei der Bearbeitung der Datenbank fest.
Die Datenbank habe ich mit Access erstellt.
Ich bin jetzt soweit, dass die Datenbank in VB in einer Datagridview angezeigt wird und ich Einträge hinzufügen kann, diese werden auch gespeichert.
Problem ist jetzt, ich kann keine Zellen bearbeiten ?!? Wenn ich dann auf speichern klicke, kommt die Meldung: Für ein Update ist ein gültiger Updatecommand erforderlich.
Könnte mir da jemand ein Tipp geben, danke! | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 02.03.19 03:17 |
| Hallo,
ich hab mal ein Screenshot hochgeladen. Vielleicht hilft das weiter.
screen.JPG
Datagridview ist hinzufügen bearbeiten und löschen aktiviert.
Ich versteh nicht, warum das Programm abstürzt sobald ich eine Zelle verändere und speichern klicke?
Gruß
Markus
Beitrag wurde zuletzt am 02.03.19 um 03:20:07 editiert. | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 02.03.19 03:40 |
| Der Download (Shot) so nicht verfügbar:
Ungültiges Sicherheitszertifikat!
Ohne eine Erklärung zur Art des Zugriffs auf MS-Access
und entsprechende Code-Schnipsel kann man nix sagen. | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 02.03.19 03:50 |
| Hier habe ich mal den Code.
Ich habe eine Access Datenbank erstellt und in VB unter Extras->mit Datenbank verbinden->Microsoft Access-Datenbankdatei (OLE DB) verbunden.
Danach Datenquelle hinzufügen und die Tabelle als Datagridview in die Form1 gezogen.
Es wurden automatisch Funktionen wie löschen, hinzufügen und speichern hinzugefügt.
Soweit klappt das auch, aber das ändern von Zellen ist nicht möglich, sobald ich eine Zelle verändere kann ich nicht mehr speichern, dann bricht das Programm ab.
Public Class Form1
Dim index As Integer
Private Sub ÜbersichtBindingNavigatorSaveItem_Click(sender As Object, e As _
EventArgs) Handles ÜbersichtBindingNavigatorSaveItem.Click
Me.Validate()
Me.ÜbersichtBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.SportwettenDataSet)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: Diese Codezeile lädt Daten in die Tabelle
' "SportwettenDataSet.Übersicht". Sie können sie bei Bedarf verschieben
' oder entfernen.
Me.ÜbersichtTableAdapter.Fill(Me.SportwettenDataSet.Übersicht)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
Button1.Click
Dim newdatarow As DataGridViewRow
newdatarow = ÜbersichtDataGridView.Rows(index)
newdatarow.Cells(1).Value = TextBox1.Text
newdatarow.Cells(2).Value = TextBox2.Text
newdatarow.Cells(3).Value = TextBox3.Text
newdatarow.Cells(4).Value = TextBox4.Text
End Sub
Private Sub ÜbersichtDataGridView_CellClick(sender As Object, e As _
DataGridViewCellEventArgs) Handles ÜbersichtDataGridView.CellClick
index = e.RowIndex
Dim selectedrow As DataGridViewRow
selectedrow = ÜbersichtDataGridView.Rows(index)
TextBox1.Text = selectedrow.Cells(1).Value.ToString()
TextBox2.Text = selectedrow.Cells(2).Value.ToString()
TextBox3.Text = selectedrow.Cells(3).Value.ToString()
TextBox4.Text = selectedrow.Cells(4).Value.ToString()
End Sub
End Class | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 02.03.19 04:29 |
| Hi,
ich habe jetzt auf die Access Datenbank verzichtet und eine SQL Datenbank mit VB erstellt, eine Tabelle hinzugefügt und die einzelnen Spalten hinzugefügt.
Nachdem ich die Datenbank verbunden hatte und die Datenquelle hinzugefügt hatte, konnte ich die Tabelle in die Form1 ziehen und anschließend starten. Jetzt funktioniert das komplette Programm. Ich kann Einträge direkt in die Tabelle eintragen, editieren und speichern.
Soweit so gut erstmal...
Eine weitere Frage,
Ich möchte ja meine Gewinne/Verluste für jeden Monat und jedes Jahr anzeigen lassen.
Reicht es dann aus wenn ich EINE Spalte "Datum" anlege um die Gewinne/Verluste zu berechnen oder ist es besser eine Spalte für Jahr und eine für Monat anzulegen ?
Wie kann ich das in VB realisieren dass es nur Beträge von bestimmten Monaten/Jahren zusammenrechnet?
Gruß
Markus
Beitrag wurde zuletzt am 02.03.19 um 04:41:57 editiert. | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 02.03.19 06:22 |
| Woran das Problem liegt, kann ich nicht eindeutig erkennen.
Der automatisch erstellte Code sieht korrekt aus.
Hast Du Modify-Zugriffsrechte auf die Access-DB?
Verwendest Du eine lokale Kopie der DB
(ins Anwendungsverzeichnis kopiert)?
Nutze für die Controls Datenbindung.
Im folgenden Beispiel heißt die DB "Test_2019" und die Tabelle "Basis".
Public Class frmAccess
'Liste der Textboxen
Dim Texte As New List(Of TextBox)
Private Sub BasisBindingNavigatorSaveItem_Click(sender As Object,
e As EventArgs) Handles BasisBindingNavigatorSaveItem.Click
Me.Validate()
Me.BasisBindingSource.EndEdit()
Try
Me.TableAdapterManager.UpdateAll(Me.Test_2019DataSet)
Catch ex As Exception
MsgBox("Update scheitert !!!" & vbCrLf & ex.Message,
MsgBoxStyle.Exclamation)
End Try
End Sub
Private Sub frmAccess_Load(sender As Object,
e As EventArgs) Handles MyBase.Load
Me.BasisTableAdapter.Fill(Me.Test_2019DataSet.Basis)
Me.Size = New Size(440, 600) 'Formulargröße
'Controls positionieren
BasisDataGridView.Location = New Point(10, 30)
BasisDataGridView.Size = New Size(400, 400)
'Textboxen per Programmcode in einer Liste erstellen
Dim texte_height As Integer = 30
Dim texte_top As Integer = 450
Dim tb As TextBox
Dim dt As DataTable = Me.Test_2019DataSet.Tables("Basis")
For i As Integer = 0 To 3
'Textbox erstellen
tb = New TextBox With
{.Parent = Me, .Top = texte_top + i * texte_height,
.Height = 30, .Width = 400}
'Ereignis-Routine hinzufügen (Datenbindung)
tb.DataBindings.Add("Text", BasisBindingSource,
dt.Columns(i).ColumnName)
AddHandler tb.KeyDown, AddressOf tb_keydown
'Textbox in Liste eintragen
Texte.Add(tb)
Next i
End Sub
Private Sub tb_keydown(ByVal sender As Object, e As KeyEventArgs)
'Auf bestimmte Tasten in allen Textboxen reagieren (Navigation)
Select Case e.KeyCode
Case Keys.Return, Keys.Down
Me.Validate()
Me.BasisBindingSource.EndEdit()
If BasisBindingSource.Position <
BasisBindingSource.Count - 1 Then
BasisBindingSource.Position += 1
End If
Case Keys.Up
If BasisBindingSource.Position > 0 Then
BasisBindingSource.Position -= 1
End If
End Select
End Sub
End Class | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 02.03.19 06:36 |
| Für statistisch aufbereitete Werte
benötigst Du eine oder mehrere weitere Tabellen.
Ich würde eine Tabelle für die Monatsstatistiken
und eine für die Jahresstatistiken erstellen.
Allerdings könnte man auch eine Routine schreiben,
die aus den Monatsstatistiken die Tabelle für
die Jahres-Statistiken jeweils programmintern erst erstellt
(z.B. per LINQ-Abfrage, Where-Klausel, Beispiele im Forum).
Bei der Gestaltung der Tabelle für Monatswerte
könnte man der Einfachheit halber eine DateTime-Spalte
erstellen, in der stets der erste Tag des entsprechenden
Monats als Datum eingetragen wird.
Mit den Date-Methoden kann leicht Monat und Jahr daraus
abgefragt werden.
Bei der Anzeige kann an eine Formatanweisung einbauen,
so daß statt dem Datum Monat und Jahr angezeigt wird.
(In zwei Spalten würde ich die Zeitangabe nicht zerlegen.)
Aber das sind auch Geschmacksfragen .... | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 02.03.19 07:09 |
| Untypisiertes Beispiel für eine Monatssumme
bestimmt per Linq-Aggregate.
Der erste Parameter gibt eine Decimal/Währungsspalte
an, die summiert werden soll, der zweite Parameter die
Spalte mit dem Datum, die weiteren Parameter den Monat.
Private Function GetMonthSum(ByVal columnname_sum As String,
ByVal columnname_date As String,
ByVal Month As Integer, ByVal year As Integer) As _
Double
'Die geladene Tabelle
Dim dt As DataTable = Test_2019DataSet.Tables("Basis")
Return Aggregate row As DataRow In dt.AsEnumerable
Let dti As Date = DirectCast(row(columnname_date), DateTime),
vl As Decimal = DirectCast(row(columnname_sum), Decimal)
Where dti.Year = year AndAlso dti.Month = Month
Into Sum(vl)
End Function | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 02.03.19 07:27 |
| Guten Morgen,
deine Beispiele werde ich mir heute Abend anschauen bzw. mal testen und versuchen zu verstehen. Danke nochmals für deine Mühe.
Um ehrlich zu sein habe ich mir das einfacher vorgestellt mit der Statistik.
Ich dachte, man könnte das ähnlich wie in Excel umsetzen.
Kann man nicht einfach ein label platzieren und als Code sowas benutzen:
Wenn Spalte A = Februar und Spalte B = 2019 dann addiere den Wert aus Spalte C
label = Ergebniss
Denke ich da zu einfach? | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 02.03.19 07:39 |
| Excel ist ein Tabellenkalkulationsprogramm.
Dort sind Zeilen-/Spalten-Berechnungen fest vorgesehen.
Visual Basic ist eine Programmiersprache, d.h.
man muß seine Sachen programmieren.
Allerdings stehen im Net-Framework sehr viele Hilfsmittel
(Klassen) zur Verfügung.
Und für die Verarbeitung von "Enumerables" (Auflistungen,
z.B. von Datenzeilen) gibt es eine eingebettete Query-Sprache:
Linq | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 03.03.19 05:01 |
| Guten Morgen,
leider konnte ich mit deinem Code nichts anfangen.
Ich habe Ihn eingefügt und die DB erstellt.
Das meiste vom Code ist rot unterstrichen und ich weis nicht wie ich den Code zum laufen bekomme.
Gruß
Markus | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 03.03.19 05:14 |
| Du mußt die von mir benutzten Control-Bezeichnungen
jeweils auf Die von Dir benutzten Bezeichnungen
(Tabellenname, Datenbankname) umsetzen.
Dann sollte er lauffähig sein ....
Übrigens: Das ist ein Programmierforum, kein CopyShop.
Der Code verweist auf Programierkonstrukte
und deren Anwendung.
Du solltest in der Dokumentation bei den
entsprechenden Stichworten nachlesen,
was dieser Code macht und dann selbst programmieren. | |
Re: Bet-Tracker programmieren | | | Autor: DreamerXY | Datum: 03.03.19 05:29 |
| Manfred X schrieb:
Zitat: | | Übrigens: Das ist ein Programmierforum, kein CopyShop. | |
Das ist mir schon bewusst.
Damit beschäftige ich mich schon die halbe Nacht :/
Problem ist immer, Visual Basic schreibt Fehler mit denen ich nichts anfangen kann.
Mir werden zwar Lösungsvorschläge angezeigt, aber damit kann ich auch recht wenig anfangen. | |
Re: Bet-Tracker programmieren | | | Autor: Manfred X | Datum: 03.03.19 05:58 |
| Du hast bei der Erstellung der Datenbank automatisierten
umfangreichen Code erstellt.
Der Code in Deinem Formular baut darauf auf.
Das betrifft auch die Art, wie Controls und andere
Klasseninstanzen bezeichnet werden:
- DatenbanknameKlassenname
- TabellenNameControlname
Du mußt deshalb die von mir geposteten Bezeichnungen, die auf
meinem Code-Gerüst aufbauen so umbenennen, daß sie zu Deinem
Code-Gerüst passen.
Wenn Du weiterkommen willst, mußt Du die von mir verwendeten
Programmierkonstrukte (Addhandler, Datenbindung, LINQ-Abfrage)
verstehen. | |
Re: Bet-Tracker programmieren | | | Autor: shushil1kumar2 | Datum: 21.06.19 08:16 |
| Thanks for this information, Visit SMO Service in Australia for best and Affordable SMO Service.DreamerXY schrieb:
Zitat: | | Hallo Community,
wie in der Überschrift schon steht, möchte ich gern einen
Bet-Tracker programmieren.
Ich Wette regelmäßig auf Fussball Ereignisse und
protokolliere diese mit Excel.
Jetzt würde ich gern das ganze mit VB realisieren.
Es sollen Daten wie
Datum,Liga,Spiel,Tipp,Quote,Einsatz,Gewinn,Verlust usw... in
einer Datenbank gespeichert werden mit denen anschließend
eine Statistik erstellt wird wie zb. eine monatliche
Gewinnübersicht, eine jährliche Gewinnübersicht usw..
Wie könnte ich das am besten realisieren?
Man bekommt sehr viele Informationen über VB + Datenbank..
aber welche für mein Vorhaben geeignet ist kann ich nicht
sagen. Wäre da eine Datenbank mit Access sinnvoll? Kann ich
diese über VB einlesen und mit den Daten arbeiten?
Mit freundlichen Grüßen,
Markus | |
| |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|