Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Tomas Laska
Člen
Avatar
Tomas Laska:6.1.2014 16:09

ahojte mam takuto ulohu
Ulozena procedura
V cvicnej databaze Northwind.accdb je tabulka Orders Details, ktora obsahuje zoznam
predanych produktov. Zostavte dopyt (Queries), ktory potom v programe bude
vystupovat ako ulozena procedura, pomocou nej urcite celkovu trzbu predanych
produktov. (Zostavte SQL prikaz, v ktorom pouzijete funkciu SUM). Nezabudnite
odpocitat zlavu na urcite produkty (Discount). Napiste program ( moze to byt aj
konzolova aplikacia), kde dopyt bude tvorit ulozena procedura, ktora po spusteni
vypocita celkovu trzbu pre predane produkty.

pridal som aj zdroj viete mi s tým pomôcť ?

CREATE PROCEDURE sp_ordersByEm­ployeeId
@EmployeeID int
AS
SELECT OrderID, CustomerID
FROM Orders
WHERE EmployeeID=@Em­ployeeID
GO
EXECUTE sp_ordersByEm­ployeeId 2


takto zistujem dopyt
CREATE PROCEDURE sp_ordersByEm­ployeeId2
@EmployeeID int,
@OrderCount int = 0 output
AS
SELECT OrderID, CustomerID
FROM Orders
WHERE EmployeeID = @EmployeeID;

SELECT @OrderCount = count(*)
FROM Orders
WHERE EmployeeID = @EmployeeID
RETURN @OrderCount


otestovanie procedury
DECLARE @return_value int,
@OrderCount int
EXECUTE @return_value = sp_ordersByEm­ployeeId2
@EmployeeID = 2,
@OrderCount = @OrderCount OUTPUT
SELECT @OrderCount as '@OrderCount'
SELECT 'Return value' = @return_value

respektive skusal som to aj takto konzolovovou aplikaciou

using System;
using System.Data;
using System.Data.OleDb;

class CallSp1
{
static void Main()
{
// vytvor pripojenie
OleDbConnection conn = new OleDbConnecti­on(@"Provider =
Microsoft.ACE­.OLEDB.12.0;
Data Source=U:\Nor­thwind.accdb");
try
{
conn.Open();

// vytvor prikaz
OleDbCommand cmd = conn.CreateCom­mand();

// specifikacia ulozenej procedury na spustenie
cmd.CommandType = CommandType.Sto­redProcedure;
cmd.CommandText = "Invoices";

// vykonaj prikaz
OleDbDataReader rdr = cmd.ExecuteRe­ader();

// zpracuj vyslednu sadu
while (rdr.Read())
{
Console.Write­Line("{0} {1} {2}",
rdr[0].ToStrin­g().PadRight(5),
rdr[1].ToString(),
rdr[2].ToString());
}
rdr.Close();
}
catch (OleDbException ex)
{
Console.Write­Line(ex.ToStrin­g());
}
finally
{
conn.Close();
}
Console.ReadLine();
}
}

toto je vystup zamestnancov, ale ani to mi nejde viete mi s tým pomôcť ??

Editováno 6.1.2014 16:11
 
Odpovědět
6.1.2014 16:09
Avatar
Odpovídá na Tomas Laska
Neaktivní uživatel:7.1.2014 22:03
  1. příště doporučuju zdroják do [ code ], líp se pak čte
  2. z toho co píšeš, se špatně dá obtížně úpznat, kde by mohla být chyba - např. u Invoices nevim, jestli máš správně napsaný SQL dotaz (zkus debugovat - dát breakpointy a kontrolovat průběžný stav proměnných ve VS, abys věděl co ti to přesně kde vrací)
  3. pro porovnání můžeš zkusit použít datacontext a LinQ dotaz (kdyby sis nevěděl rady, abys snáze přišel na to, co máš případně špatně - doporučuju si dát break point hned za LinQ dotaz, a pak na něj najed myší ;) ) - viz např.:

http://www.itnetwork.cz/…lekce-a-linq

Nahoru Odpovědět
7.1.2014 22:03
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.