How to save button_Click as timertime start and stop in sql database C#

Status
Niet open voor verdere reacties.

Roadrocker66

Gebruiker
Lid geworden
7 mei 2009
Berichten
104
Hallo allemaal.
Roadrocker66 hier weer eens.

Na een lange periode van afwezigheid ben ik hier weer eens aan het programmeren geslagen en heb een vraag die mij al bijna 2 jaar bezig houd.
Hoe sla ik een button klik op als timertime start/stop op in mijn sql database?
Ik gebruik daarvoor een stopwatch!

Zie afbeelding!
IMG.jpg
Elke keer als ik nu de timertime her start zou die de totale actie tijd in mijn sql database of in evt. een andere database moeten worden opgeslagen.
Zo kun je altijd controleren hoelang je bezig geweest bent met een bepaalde actie.

Bijvoorbeeld:
timer start 08:00 uur met start opstarten button
Om 08:15 uur stop ik met opstarten en start ik met rijden. (met de start rijden button).
Totale opstarttijd = 00:15:00 uur
Om 10:00 uur stop ik met rijden en start ik met laden. (met de start laden button).
Totale rijtijd = 01:45:00 uur
Om 11:00 uur stop ik met laden en start ik weer met rijden. (met de start rijden button)
Totale laadtijd is 01:00:00 uur.
Enz.

Het moet er dan als volgt uit zien in mijn database of wat dan ook!
08:00:00 uur tot 08:15:00 uur = 00:15:00 uur Opstarten
08:15:00 uur tot 10:00:00 uur = 01:45:00 uur Rijden
10:00:00 uur tot 11:00:00 uur = 01:00:00 uur Laden

Hoe doe ik dit?

Wie kan mij helpen?
 

Bijlagen

  • Menu.jpg
    Menu.jpg
    103,7 KB · Weergaven: 16
  • Menu.jpg
    Menu.jpg
    104,1 KB · Weergaven: 14
Misschien iets als dit:

TravelId, Action, StartTime, ElapsedTime

1, "startup", 08:00, 00:15
1, "drive", 08:15, 00:45
1, "load", 09:00, 00:20
1, "drive", 09:20, 02:40
1, "break", 12:00, 00:30
1, "drive", 12:30, 02:00
1, "unload", 14:30, 00:30
1, "drive", 14:30, 00:30
1, "fuel", 15:00, 00:10
1, "drive", 15:10, 00:50


p.s.

feul -> fuel
calander -> calendar
 
Hallo allemaal!

Deze codes heb ik al!

Bij using:
Code:
using System.Runtime.CompilerServices;
using System.Threading;

Voor de stopwatch::
Code:
Stopwatch sw = new Stopwatch();

Voor de timertick:
Code:
TimeSpan elapsed = sw.Elapsed;
timerTime_lbl_Maroon.Text = String.Format("{0:00}:{1:00}:{2:00}",
Math.Floor(elapsed.TotalHours), elapsed.Minutes,
elapsed.Seconds);

Voor de start_startUp_btn_Click:
Code:
timeTimer.Stop();
sw.Reset();
timerTime_lbl_Maroon.Text = "00:00:00";

timeTimer.Start();
sw.Start();
action_lbl_Maroon.Text = "Start-Up";

Dit geld ook voor start_pickUp_btn_Click. enz, enz.
Nu zou er nog een stukje code moeten komen voor het opslaan van de actie tijd in de database!
In dat geval zou de suggestie TravelId - Action - StartTime en ElapsedTime niet verkeerd zijn mits er dan tussen StartTime en ElapsedTime ook nog StopTime kwam te staan.
TravelId vind ik dan niet zo belangrijk?

Ik gebruik overigens Microsoft Visual Studio 2010 Express C#

Mvg. Roadrocker66
 
Als je de data terug wilt halen is een id / rit wel handig ;)

in deze namespaces zit wat je nodig hebt:

System.Data
System.Data.SqlClient

zie voor voorbeelden MSDN pagina
 
Hallo Bloodshed.

Heb je voor mij misschien een link naar zo'n voorbeeld op een MSDN pagina voor mij?
Ben zeer onbekend met die MSDN! :o

Mvg. Roadrocker66
 
Erg bedankt.

Wou dat ik wat van begreep.
Heb nu op alle formulieren waarvan de gegevens moeten worden opgeslagen de using System.Data.SqlClient toegepast.
Blijft de vraag nog steeds, hoe sla ik nu een button_click en de text (bv StartUp) op in mijn database?
En natuurlijk ook, hoe sla ik de actie timer tijd op?

Ik ben nog niet erg onderlegd met programmeren en technisch al helemaal niet, toch vind dat ik al aardig wat heb voor elkaar gekregen.
Zou ook graag willen dat mijn programma straks gewoon zal gaan werken.
Maar zodra het moeilijk wordt zit ik met de handen in het haar.
O, Sorry ik ben kaal.

Sommige codes en uitleg voor dummy's haal ik wel van het internet.
Maar er is ook nog heel veel niet te vinden.

Mvg. Roadrocker66
 
Die sql database met tables had ik al gemaakt.
Maar ga die video's zeker ff bestuderen.

Alvast bedankt.

Mvg. Roadrocker66:cool:
 
How to save button_Click as timertime start and stop in sql database C#Hallo allemaal

Hallo allemaal

Roadrocker66 hier weer eens.

Na aanleiding van mijn mijn vragen en de antwoorden heb ik de video's van Fabio Scope op YouTube bekeken en een proef database opgezet.
YouTube video: http://www.youtube.com/watch?feature=fvwp&NR=1&v=NFnKSqC1FUE

In mijn Save commando ( de btnSave_click Event) heb ik de volgende code geplaatst:
Code:
  da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES(@FirstName, @LastName)", cs);
            da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = textBox1.Text;
            da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = textBox2.Text;
 
            cs.Open();
            da.InsertCommand.ExecuteNonQuery();
            MessageBox.Show("Contact saved");
            cs.Close();

Nu wil ik dat mijn programma telkens wanneer ik een nieuwe contact wil opslaan deze checkt of deze contact already exist en mij vraagt of ik hem wil overschrijven of niet.
Zo ja moet ie overschrijven, zo niet moet ie niets doen.
Zoiets met if en else!
Bestaat het nieuwe contact niet mag ie gewoon bovengenoemde code afwerken.

Hoe doe ik dit?

Mvg. Roadrocker66:cool:
 
Je kunt alle records selecteren waar FirstName = @FirstName en LastName = @LastName, als je geen record terug krijgt kun je hem invoegen.
Let wel dat wanneer er 2 personen zijn met de naam Jan Janssen moet je weer iets anders verzinnen ;)

Dan zou je dus de contactpersonen uniek moeten kunnen herkennen. Zoals wij ieder een burger servicenummer hebben.
 
Hallo Bloodshed

Heb je misschien een voorbeeld voor me of kun je wat specifieker zijn hoe het er dan uit zou moeten komen zien aub?
Ik begrijp het nog niet helemaal!

Mvg. Roadrocker66:o
 
Als je een ExecuteNonQuery gebruikt krijg je een integer terug gelijk aan affected row count

Dus bij:
Code:
SELECT CustomerID FROM Customers WHERE FirstName = 'John' AND LastName = 'Doe'
krijg je de waarde 1 terug als er een customer is met voornaam john en achternaam doe, als deze er niet is krijg je 0 terug (return 2 indien er 2 john doe's zijn etc)
Aan de hand van deze waarde kun je dus een INSERT of iets anders doen.

Ik kan morgen denk ik wel een voorbeeld maken.
Eerst zelf 50x proberen, hoe meer fouten je maakt hoe meer je leert ;)


IPV in VS2010 kun je ook dingen testen in MSSQL Management studio, kun je queries gemakkelijk testen

hier zie je bv ook affected row count
2ed32o3.jpg
 
Heb een voorbeeldje gemaakt, zie maar of je er wijs uit wordt.

Bekijk bijlage CustomerExample.zip

Let wel is een heel simpel voorbeeld en snel in elkaar gezet. (sommige dingen ctrl+c / ctrl+v uit oud project :P)
Kan best een foutmelding komen maar basis zou wel redelijk moeten werken.

Normaal wil je niet de code meteen in de click events etc zetten maar in losse methods en zo min mogelijk in de forms zelf maar als voorbeeld is dat makkelijker :P

Debug de code maar een beetje zodat je weet wat er gebeurt, en als je het snapt kun je zelf je implementatie er van maken. Dus niet ctrl+c/ ctrl+v, daar is deze code te slecht voor, alleen voor eigen gebruik :P)

Als je nog vragen hebt kun je ze aan de hand van het voorbeeld misschien specifieker vragen.
Of je kunt me ook op msn toevoegen, soms makkelijker met kleine vragen of uitleg.

Zet wel even de ConnectionString details in 'AccessCustomers' goed voor je eigen database
Code:
        private static string ConnectionString
        {
            get
            {
                var cs = new SqlConnectionStringBuilder
                             {
                                 DataSource = @"localhost\SQLEXPRESS",
                                 InitialCatalog = "ExampleDatabase",
                                 IntegratedSecurity = true
                             };

                return cs.ConnectionString;
            }
        }


(gebruikt een 'Customers' table met CustomerID, FirstName, LastName columns)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan