Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

vise data setova u jednoj uskladistenoj proceduri

[es] :: .NET :: vise data setova u jednoj uskladistenoj proceduri

[ Pregleda: 1416 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

adopilot
Admir Hodžić
It menager
Sarajevo BiH

Član broj: 123492
Poruke: 134
217.199.135.*

Sajt: nemam ja to


Profil

icon vise data setova u jednoj uskladistenoj proceduri04.04.2009. u 23:29 - pre 183 meseci
Poštovni !
Već sam spomenuo da sam hrabro zagazio u vode C#-a i tih čudesa sa .NET-om
Ukoliko budem lupao gluposti unaprijed izvinjenje i hvala za razumjevanje.
Prvi zadatatak koji sam sebi zacrtao je to da prepravim aplikaciju koja radi dovlačenje podataka sa glavnog
servera na lokalni server i dostavlja kao CSV-ove.

Pitanje je slijedeće, ako sam napravio uskladištenu proceduru na SQL serveru koja izgleda otrpilike ovako:

Code:


@skl_id int

begin

select * from barcode where skl_id=@skl_id;

select * from lager where skl_id=@skl_id

select * from skladiste where id=@skl_id

end




Mogu li na neki način razlikovati ove različite data setove kako bi u aplikacije koja koristi C# mogao
napuniti više data setova šaljući samo jednom parametar.
Nekako bi mi ovako kod bio lijepši kada bi za podatke koji idu prema kasi imao samo jesan SPROC.

Kod snipesti koje sam našao za punjenje data setova koje ću poslije sladi u proceduru za generisanje CSV-ova
izgleda otprilike ovako:



Code:

SqlConnection conn = new SqlConnection("Data 
Source=localhost;Database=Northwind;Integrated Security=SSPI");
SqlCommand command = new SqlCommand("GetProducts", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@CategoryID", SqlDbType.Int).Value = 1;
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds, "Products");
this.dataGrid1.DataSource = ds;
this.dataGrid1.DataMember = "Products";


Ima li neki bolji prijedlog kako se riješavaju ovakve situacije kada vam za obradu treba više podataka,
dali da to ide u jednoj proceduri ili više.
Aplikaciju koju mi koristimo u Firmi momci su osmislili nekako sa XML dokumentima koji stoje u file sistemu a ne u SQL-u
pa bi u jednoj datoteci mogli imati više galerija koje su razvrstanje tagoveima.

Kako sam ja kreuno u vlastitu avanturu kodiranja milism da bi bolje bilo da pozivanje podataka iz baze držim u samoj bazi
radi oni execution planova i kozna čega još

Unaprijed zahvalan
Admir
S poštovanjem
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
78.155.56.*



Profil

icon Re: vise data setova u jednoj uskladistenoj proceduri08.04.2009. u 13:03 - pre 182 meseci
Ovako kako si ti naveo ne moze. Gledaj, ti pises:

Code:

adapter.Fill(ds, "Products");


Pozivas fill metodu, punis tabelu "Products" dataseta. A uskladistena procedura ce ti vratiti tri seta podataka koje bi trebalo ici u tri razlicite tabele, a ovako ti punis samo jednu tabelu sa tri razlicite seme. Tako ne ide.

Svakako moras punit' svaku tabelu ponaosob, pa napravi tri procedure za svaku tabelu, ne vjerujem da ce uopste bit' sporije.

A isto mislim da tvoju originalnu proceduru mozes izvrsiti datareader-om, tj. on ce ti dati tri razlicita seta podataka, jedan za drugim, ali bi onda morao LoadTable metodom ucitati te setove podataka u odgovarajuce tabele.

Pozdrav.
 
Odgovor na temu

adopilot
Admir Hodžić
It menager
Sarajevo BiH

Član broj: 123492
Poruke: 134
217.199.135.*

Sajt: nemam ja to


Profil

icon Re: vise data setova u jednoj uskladistenoj proceduri08.04.2009. u 22:57 - pre 182 meseci
Hvala na savjetu uspio sam napraviti ono što sam želio,
Malo uz vaš guide line malo uz google.

Generalno moja je ideja da za jedan poslovni proces imam jednu uskladištnu proceduru,
Kako sam ja uvijek bio neuredan pa tako i u kodu onda mislim da bi mogao zaboraviti updateovati neku od
procedura koja se veže za to neki proces.
Možda je primjer da sutra odlučim da ne šaljem neke arikle na kasu onda samo uradim update sporca procedure a barkod ostane sa tim ariklima i imam glupost
na sistem.

Evo jedan onako školiski primjer kako da generišemo CSV(comma separated value) datoteke iz uskladištene procedure
Znači imamo uskladištenu proceduru sp_ado_pos_data koja prihvata parametar @skl_id tipa integer,
Ista procedura ce vratiti nekoliko data setova
jer u sebi ima više puta naveden select

Lijep pozdrav

Code:

using System;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace bo
{
    class Program
    {
        static private void CreateCSVFile(DataTable dt, string strFilePath)
        {
            #region Export Grid to CSV
            // Create the CSV file to which grid data will be exported.
            StreamWriter sw = new StreamWriter(strFilePath, false);
            int iColCount = dt.Columns.Count;
            
            // First we will write the headers.

            //DataTable dt = m_dsProducts.Tables[0];
            for (int i = 0; i < iColCount; i++)
            {
                sw.Write(dt.Columns[i]);
                if (i < iColCount - 1)
                {
                    sw.Write(";");
                }
            }
            sw.Write(sw.NewLine);
            
            // Now write all the rows.
            foreach (DataRow dr in dt.Rows)
            {
                for (int i = 0; i < iColCount; i++)
                {
                    if (!Convert.IsDBNull(dr[i]))
                    {
                        sw.Write(dr[i].ToString());
                    }
                    if (i < iColCount -1 )
                    {
                        sw.Write(";");
                    }
                }
                sw.Write(sw.NewLine);
            }
            sw.Close();

            #endregion
        }
        static void Main(string[] args)
        {
            string strConn = "Data Source=192.168.0.1;Initial Catalog=testnabaza;Persist Security Info=True;User ID=ado;Password=****";//KONEKCIJA NA SQL
            string direktorij = @"d:\data\"; //ovo je adresa direktorija gdije će mo exportovati podatke
            SqlConnection conn = new SqlConnection(strConn); 
            SqlCommand command = new SqlCommand("sp_ado_pos_data", conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add("@skl_id", SqlDbType.Int).Value = 158;
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                string datoteka  = (string.Format(@"{0}tablea{1}.csv", direktorij, i));
                DataTable tabela = ds.Tables[i];
                CreateCSVFile(tabela,datoteka );
                Console.WriteLine("Generišem tabelu {0}", datoteka);
            }
            Console.ReadKey();
        }
    }
 }




S poštovanjem
 
Odgovor na temu

[es] :: .NET :: vise data setova u jednoj uskladistenoj proceduri

[ Pregleda: 1416 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.