Cześć,
Dopiero co zaczynam swoją przygodę z C#, ADO.NET .NET, (póki co nierozumiem czym różnią się te trzy nazwy). Kupiłem na allegro fajne trzy książki:
- TECHNOLOGIE ASP.NET i ADO.NET w Visual Web Developer 2005 - zrobiłem z niej Sklep internetowy oraz Konferencje
- ĆWICZENIA ASP.NET w Visual Web Developer 2008 - zrobiłem w niej Stronę dla Nauczycieli.
- C# i .NET Stephan C.Perry C# 2.0 - nic z niej nie zrobiłem, książka kompendium wiedzy - za duża.
Ćwiczenia dały mi pewność siebie, że programowanie na prawdę jest dla każdego, ale należy cały czas tworzyć aplikacje.
W mojej pracy mam czas na rozwój. Przełożony dał mi zielone światło by w wolnej chwili nauczyć się C#. Jako pierwszy projekt z którego będę rozliczony to - Ewidencja Czasu Pracy. Z racji tego, że ćwiczyłem w Visual Web Developer rozpocząłem prace w wersji 2008. Z podłączoną bazą danych w SQL Serwer 2012.
0 - opis strony
1.1 Na pierwszej stronie, wybieram z DropDownList pracownika (wprowadzonego wczesniej, bedzie tez opcja aby dopisac nowego pracownika - zrobić INSERT)
2.1 Na stronie drugiej, głównym zamierzeniu jest liczenie czasu pracy pracownika, odbywa się to za pomocą wyboru daty wejscia i daty wyjscia, i pokazana ilość godzin pracy w tym okresie. Tworzona jest tymczasowa tabela za pomoca "Stored Procedure 2".
1
Oczekiwania od użytkowników 4programmers:
Odpowiedzi na pewne pytania:
1.1) Czy obecnie używacie Stored Procedure?
1.2) Jak komunikować się z bazą danych? Znajomy powiedział, że sposób jaki teraz to zrobiłem:
SqlDataSource1.InsertCommand = "INSERT INTO dane (ID_USER) VALUES ('" + DropDownList1.Text + "')";
jest sprzed 10ciu lat, a teraz stosuje się frameworki, prosiłbym jakis przyklad, bo nie wyobrazam sobie innej metody w tym momencie.
1.3) Czy jak stworzyłem Stored Procedure 2 i pojawiła mi się tmczasowa tabela, to czy mogę jedynie do LABEL1 wywołać wynik? aby powstał tekst w stylu: "Pracownik przepracował 14:01 godzin" Teraz mam tak, że jest tabela o nazwie "Dupa" i w kolejnym wierszu 14:01. Jak tak to jak to napisać (tabela tymczasowa - rozumiem, przez to, że pojawia się na czas życia sesji, nigdzie nie jest zapisywana i znika)
1.4) Z biegiem czasu dopisze więcej pytań.
1.5) Jak dodać zdjęcia do tekstu na forum 4programmers? Obecnie są jako załącznik
1.6) Liczę na Wasze sugestie.
2
No i kod strony: (jest to propotyp, więc wyciągam z MSSQL tabele aby były widoczne)
2.1) Wygląd:
Dodałem dwa załączniki ale nie wiem jak zrobić by były widoczne
<image>1.jpg</image>
<image>2.jpg</image>
2.2) Kod:
Strona Default.aspx:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string data = DateTime.Now.ToString();
SqlDataSource1.InsertCommand = "INSERT INTO dane (ID_USER) VALUES ('" + DropDownList1.Text + "')";
try
{
SqlDataSource1.Insert();
Label1.Text += "Pracownik" + " " + DropDownList1.DataTextField + " wszedł do biura: " + data + "<BR>";
//DropDownList1.DataTextField = "";
}
catch (Exception exc)
{
Label1.Text += data + "<FONT COLOR=red>" + exc.Message + "</FONT><BR>";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string data = DateTime.Now.ToString();
SqlDataSource1.UpdateCommand = "UPDATE dane SET DATA_WYJSCIA = getdate() WHERE DATA_WYJSCIA IS NULL AND ID_USER = '" + DropDownList1.Text + "' ";
try
{
SqlDataSource1.Update();
Label1.Text += "Pracownik" + " " + DropDownList1.Text + " wyszedł z biura: " + data + "<BR>";
//DropDownList1.DataTextField = "";
}
catch (Exception exc)
{
Label1.Text += data + "<FONT COLOR=red> + exc.Message + </FONT><BR>";
}
}
protected void Button3_Click(object sender, EventArgs e)
{
Response.Redirect("Tabela.aspx");
}
}
Strona druga z Tabelami:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Tabela : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Default.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView4.Visible = true;
}
protected void Button3_Click(object sender, EventArgs e)
{
Label1.Text = Calendar2.SelectedDate.ToShortDateString();
}
}
Stored Procedure 2 z MSSQL:
USE [NazwaDATA_DEV]
GO
/****** Object: StoredProcedure [dbo].[Piotrek2] Script Date: 21.07.2016 09:45:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[Piotrek2]
@UsrID as int,
@DataWej as DateTime,
@DataWyj as DateTime
AS
BEGIN
DECLARE @durMinutes int;
DECLARE @duration nvarchar(30);
--DECLARE @dzien nvarchar(20) ;
--select data_wejscia from dane where ID_user=1 and DATA_WEJSCIA='2016-06-20 08:00:11.663'
--SET @dzien = (SELECT substring(convert(varchar(10), (@DataWyj - @DataWej),120),9,10) FROM DANE WHERE id_user=@UsrID)
SET @durMinutes = (SELECT SUM(datediff(minute, data_wejscia, data_wyjscia))minuty FROM DANE WHERE id_user=@UsrID AND (DATA_WEJSCIA BETWEEN @DataWej AND @DataWyj) GROUP BY id_user)
SET @duration = (SELECT RIGHT('00' + CAST((@durMinutes / 60) AS VARCHAR(2)),2) + ':' + RIGHT('00' + CAST((@durMinutes % 60) AS VARCHAR(2)), 2) + ':00')
SELECT @duration as dupa
--, @dzien as adas
END