Avatar
t.l.bubala
Člen
Avatar
t.l.bubala:

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
hanse
Člen
Avatar
Odpovídá na t.l.bubala
hanse:
  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
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.