Bosna i Hercegovina



#1 16.09.2013-19:15
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: stored procedure Kako?
Me interesira kako se pravat stored procedure i koja e nivnata namena ,dali moze da se kombiniraat poveke proceduri i ako moze kako se pravi toa ?
pozdrav
↑  ↓

#2 16.09.2013-20:44
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: stored procedure Kako?
Mogu ti opisati SQL 2000 kako doci do stored procedura.
Slicno je i u vcim verzijama.
Otvoris Enterprise manager.
Odaberes svoju bazu i na njoj imas opciju stored procedure te odaberes New.
Otvori ti se prozor za pisanje procedure.
Imas i drugih alata za pisanje stored procedure.
Evo primjer jedne procedure:
DownloadIzvorni kod (SQL):
  1. CREATE PROCEDURE DijagramUporedni  @KUPACID1 VARCHAR(15),@TIPUZORKA1 VARCHAR(1), @RudnikID1 VARCHAR(15), @AsortimanID1 VARCHAR(15), @DATUM1 AS DATETIME,  @DATUM2 AS DATETIME
  2. AS
  3.  
  4.  
  5. SELECT { fn MONTH(Datum) } AS Mjesec, { fn YEAR(Datum) } AS Godina, SUM(Tone) AS TonaUK, SUM(Tone * DTV)  AS ToplinaUK
  6. FROM Flasice
  7. WHERE  (KUPACID=@KUPACID1) AND (REDOVNI=@TIPUZORKA1) AND (RudnikID LIKE @RudnikID1) AND (AsortimanID LIKE @AsortimanID1) AND  (Datum BETWEEN @DATUM1 AND @DATUM2)
  8. GROUP BY { fn MONTH(Datum) }, { fn YEAR(Datum) }
  9. GO

Pozdrav
↑  ↓

#3 17.09.2013-10:35
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
moze za 2000 jas gledav nesto ama ne mi e bas jasno imam sql2000 i bazi vo nego no ne mi se jasni ovie procedurive ima tamu i funkcii i onie Views kako se koristat i kako se kombiniraa megu sebe.
Moze malu pocetnicki osnovni raboti za da mozam da pocnam od nekade
↑  ↓

#4 17.09.2013-16:12
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: stored procedure Kako?
Neznam jesi li naisao na ovo.
Ako nisi mozda je najbolje da ovo proucis.

Prilozi:
Informacije o fajlu: pdf  storedprocedure.pdf
Preuzimanja: 484
Veličina: 2.06 MB


Pozdrav
↑  ↓

#5 17.09.2013-16:48
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: stored procedure Kako?
Evo ima i ovo.
Nadam se d ces se snaci.
Kada dodje zidar vjerujem da ce ti i on dati neke smjernice jer on je dobar znalac MsSql-a.

Prilozi:
Informacije o fajlu: pdf  vjezbe.pdf
Preuzimanja: 139
Veličina: 506.20 KB


Pozdrav
↑  ↓

#6 17.09.2013-19:39
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
fala zxz ke razgledam ako zaglavam ke pisam
↑  ↓

#7 18.09.2013-15:15
zidar Offline
Moderator
Registrovan/a od: 03.02.2009-21:52
Komentari: 27


Ocjena: Ocjena:100 Subject: Re: stored procedure Kako?
Views = prakticno isto sto i saved queries u Access. Razlika: uglavnom nije potrebno pisati view koji poziva drugi view, jer se SQL u MS SQL razlikuje od onog sto ima Access - mnogo je mocniji.

Stored Procedures = programi pisani u SQL jeziku koji podrzava tvoj sistem. Prihvataju parametre i mogu da rade osim vracanja podataka i izmenu (INSERT, UPDATE) pa cak i zimene struture baze i privilegija (CREATE TABLE, ALTER TABLE, GRANT)

Ako je Access front ENd, a MS SQL je back end, onda veliki broj stvari koje si radio u Access event procedurama se seli u SQL stored procedure. Na primer, ako hocesda kad se unese podatak u jednu tabelu, da se isti taj unese i u neku drugu tabelu, to sve mozes da uradis u stored proceduri, koju pozoves iz Accesa. Ako treba neko komplikovano pretrazivanje, Access query bice suvise spor - opet koristis stored proceduru koja to mnogo brze radi. Stored procedure pomazu u programiranju front enda. Umesto da kontrolu podataka vrsis na front endu, to radi stored procedura i svi programi koji menjaju podatke, ako pozivaju tvoju proceduru, radice na potpuno isti nacin i pisaces manje koda u Accesus - svi ce programi da pozivaju istu proceduru. Problem je ako ne kazes programerima da kosrite proceduru, ili zaborave da to urade.

Imas jednu specijalnu kalsu stored procedures, koja se zove TRIGGERS. Trigeri su stored procedures koje se zakace na tabele (kao event procedure na Access formama) i oni se izvrsavaju automatski kad se desi nad tabelmo neki od dogadjaja INSERT, UPDATE, DELETE. Pri tome trigger ne zna niti ga inetersuje kako se desio dogadjaj - direktnom naredbom, kroz Access formu ili kroz neku stored proceduru - trigger jedino zna da neko pokusava da promeni/obrise/doda podatke i triger ce svoj posao da odradi automatski. Trigeri se koriste za ugradjivanje poslovnih pravila i ogranicenja koje nije moguce postici na drugi nacin. Na primer, u tabeli [Izlaz] ne zelis da prihvatis unos ili izmenu ukoliko bi to dovelo do negativnog stanja. Ovo zahteva da pri svakom pokusaju promene podataka u tabeli Izlaz proveris kakvo bi bilo stanje posle te izmene i ukoliko je stanje negativno, triger jednstavno odbije promenu. Ovo je nesto sto bi pisao na BeforeUpdate za formu. Ako to pravilo stavis u trigger, onda ne moras o tome da mislis kad programiras, ni ti ni neki drugi programer koji bi mozda zaboravio da to uradi na forminom Before Update dogadjaju. Triger moze d apoziva stored procedures - i sad dobijas puniju sliku o tome sta se desava.

Pored stored procedures i triggers, imas u verzijama MS SQL 2005 pa naice i USER DEFINED FUNCTIONS. Funkcije mogu biti skalarne - posaljes parameter i funkcija vrati jednu vrednost, zatim mogu bit u stvari parametrizvani views - posaljes parametar i izvrsis se view s a WHERE @Parametar + <expression>. Imas i trecu vrstu funkcija koje sus lozenije od view-a, i isto tako vracaju tabele. Ovo je bolje nego stored procedures, jer tabele koje vracaju funkcije mozes da koristsi u SELECT izrazima unutar MS SQL, ali i iz Accesa, kroz pass-thru query.

Jedino sta treba da izbegavas jesy kursori (CURSORS) a to je nazalost suprotno onome sto pise u PDF koji je Zonic prilozio za TeraBite bazu.. Programerima je nazalost mnogo lakse da razumeju kako kursor radi (ili im se bar cini da razumeju, sto nije uvek sucaj), pa proizvedu veoma sub-optimalna resenja. Rad sa SQL procedurama i trigerima je vise SQL projektvanje i relaciona teorija, nego sto je programiranje. Ako mislsi samo da prneses programersko znanje sa Access nivoa na SQL, nije dobro. ZNanje o SQL i relacionim bazama koje sis tekao kroz rad sa Accesom nije dovoljno d abi se SQL koristio punom snagom, a ponekd je cak i stetno, jer te dosadasnje iskustvo navodi d au novom okruzenju radis stare stvari (ka na primer CURSORs). Znaci, nadji sto vise knjiga o SQL, u stvari o relacionoj teoriji jer ces morati da promenis nacin razmisljanja da bi nesto uopste napravio sa SQL.

Srecan rad :-)
↑  ↓

#8 19.09.2013-11:45
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
Fala Zidar na objasnuvajneto jas ne se imam baveno mnogu so SQL osven sto imam nekolku bazi vrzani preku ODBC drajveri no sega vo mojov slucaj imam potreba od nesto malku pomokno od msAccess baza ili samo baza na SQL server, sega ima eden mal problem sto rabotam na VB6 platforma Cristal Report 8.5 i SQL2000 toa e ona sto mi nalagaat uslovite na rabota ,neznam kolku ke uspeam da se snajdam zosto ovde ima relativno novi raboti za mene najmnogu okolu SQL i Cristl Reportot i sve toa treba dobro da se osmisli i skocka za vo idnina da moze da se premini na ponova platforma a da nema mnogu izmeni.Moj predlog bese da koristime VB.NET i SQL2005 za pocetok no ima postari programeri koi ne sakat da gledaat podaleku od NOSOT i da naucat nesto novo tie imaat zaglaveno so vb6 i msaccess i me ubeduvaat deka vo access baza ke stavat preku 2 miljoni podatoci za edna godina i deka toa ke raboti besprekorno.
Sega moram sam da rabotam bidejke site se ubedeni deka toj sistem e vo red no jas ne veruvam i moram da priremam pojaka platforma za da imame nekakva bezbednost.

No da napomenam deka ne se osekam ic isplaseno bidejki pozadi mene ja imam najdobrata podrska ICENTAR i kolegite od forumov

FALA VI NA SITE
↑  ↓

#9 19.09.2013-18:43
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: stored procedure Kako?
Evo primjer poziva cristal reporta.
E sad neznam dali si ga pravio kada?
DownloadIzvorni kod (Visual Basic):
  1. Private Sub Command1_Click()
  2. Me.CrystalReport1.SQLQuery = "SELECT * FROM Tabela;"
  3. Me.CrystalReport1.RetrieveDataFiles
  4. Me.CrystalReport1.PrintReport
  5. End Sub

Pozdrav
↑  ↓

#10 19.09.2013-22:19
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
nemam raboteno no jas naraviv edna store procedura i na osnova na taa procedura napraviv eden crystal report koj go povikuvam vaka

DownloadIzvorni kod (Visual Basic):
  1.    With CrystalReport1
  2.        .Connect = cn
  3.         '.DataSource =
  4.        .StoredProcParam(0) = krit
  5.         .ReportFileName = App.Path & "\" & "rptArtikli.rpt"
  6.         .Destination = crptToWindow
  7.         .WindowLeft = 0
  8.         .WindowTop = 0
  9.         .WindowWidth = Screen.Width
  10.         .WindowHeight = Screen.Height
  11.         .WindowState = crptMaximized
  12.         .Action = 1
  13.     End With
  14.    
mislam deka e vo red vaka
↑  ↓

#11 20.09.2013-13:40
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
imam edno queri vo stariot program koe koristi dve ili tri funcii kako ova query da go napravam vo stored procedura
DownloadIzvorni kod (SQL):
  1. SELECT tblFakturi.Faktura_Broj, tblFakturi.Tip_Faktura, tblFaktura_Stavki.Ed_Cena, tblFaktura_Stavki.Kolicina, tblFaktura_Stavki.Popust, tblFaktura_Stavki.DDV, [Ed_Cena]-([Ed_Cena]*[Popust]/100) AS Ed_Cena_So_Rabat, Format(BezDDV([Ed_Cena],[DDV]),"Fixed") AS Ed_Cena_Bez_DDV, [Ed_Cena_So_Rabat]*[Kolicina] AS Vkupno, tblFaktura_Stavki.Stavka, tblFaktura_Stavki.Ed_Mera, Zaokruzi(PresmetkaDDV([Ed_Cena],[DDV]))*[Kolicina] AS VkDDV, tblFakturi.DATA, tblFakturi.Valuta, tblFakturi.Po_Dokument, tblFakturi.Magacin, tblKomitenti.Komitent_Firma, tblFakturi.Komitent_Partner, BezDDV([Ed_Cena],[DDV])*[Kolicina] AS Vkupno_Bez_DDV, BezDDV([Prodazna_So_DDV],[DDV])*[Kolicina] AS VkProdaznaBezDDV, tblFaktura_Stavki.Posledna_Prod_Cena AS Prodazna_So_DDV, [Prodazna_So_DDV]*[Kolicina] AS Vkupno_Pr_So_DDV, PresmetkaDDV([Prodazna_So_DDV],[DDV])*[Kolicina] AS VkupnoProdaznoDDV, [VkProdaznaBezDDV]-[Vkupno_Bez_DDV] AS RazlikaVoCena, tblFakturi.VoMagacin, tblFaktura_Stavki.ID_Stavka, tblFaktura_Stavki.Barkod, tblFakturi.ID_Faktura
  2. FROM tblKomitenti INNER JOIN ((tblDokumenti INNER JOIN tblFakturi ON tblDokumenti.ID_Vid_Dokument = tblFakturi.Tip_Faktura) INNER JOIN tblFaktura_Stavki ON tblFakturi.ID_Faktura = tblFaktura_Stavki.Faktura_Br) ON tblKomitenti.ID_Komitent = tblFakturi.Komitent_Partner
  3. WHERE (((tblFakturi.ID_Faktura)=[Forms]![frmFakturi_Izlez]![ID_Faktura]))
  4. ORDER BY tblFaktura_Stavki.Stavka, tblFaktura_Stavki.ID_Stavka;

eve gi i funkciite
DownloadIzvorni kod (Visual Basic):
  1. 'Funkcija za presmetka na cena na artikal bez DDV
  2. Function BezDDV(Cena As Double, Stapka As Double)
  3.  
  4. If Stapka = 0 Then
  5. BezDDV = Cena
  6. Else
  7. BezDDV = Cena - (Cena - Cena / DDVK(Stapka))
  8.  
  9. End If
  10.  
  11. End Function
  12.  
  13. Function DDVK(DDVA As Double)
  14.    If DDVA = 25 Then DDVK = 1.25
  15.    If DDVA = 24 Then DDVK = 1.24
  16.    If DDVA = 23 Then DDVK = 1.23
  17.    If DDVA = 22 Then DDVK = 1.22
  18.    If DDVA = 21 Then DDVK = 1.21
  19.    If DDVA = 20 Then DDVK = 1.2
  20.    If DDVA = 19 Then DDVK = 1.19
  21.    If DDVA = 18 Then DDVK = 1.18
  22.    If DDVA = 17 Then DDVK = 1.17
  23.    If DDVA = 16 Then DDVK = 1.16
  24.    If DDVA = 15 Then DDVK = 1.15
  25.    If DDVA = 14 Then DDVK = 1.14
  26.    If DDVA = 13 Then DDVK = 1.13
  27.    If DDVA = 12 Then DDVK = 1.12
  28.    If DDVA = 11 Then DDVK = 1.11
  29.    If DDVA = 10 Then DDVK = 1.1
  30.    If DDVA = 9 Then DDVK = 1.09
  31.    If DDVA = 8 Then DDVK = 1.08
  32.    If DDVA = 7 Then DDVK = 1.07
  33.    If DDVA = 6 Then DDVK = 1.06
  34.    If DDVA = 5 Then DDVK = 1.05
  35.    If DDVA = 4 Then DDVK = 1.04
  36.    If DDVA = 3 Then DDVK = 1.03
  37.    If DDVA = 2 Then DDVK = 1.02
  38.    If DDVA = 1 Then DDVK = 1.01
  39.    
  40.   'If DDVA = 0 Then DDVK = 0
  41.  
  42. End Function
  43. 'funkcija za da se napravi negativnata od storno faktura vo pozitivna
  44. Function Prevrti(SumaNegativna As String)
  45.      If SumaNegativna < 0 Then Prevrti = SumaNegativna - (SumaNegativna * 2)
  46. End Function
  47. Function PresmetkaDDV(Cena As Double, Stapka As Double)
  48.  
  49. If Stapka = 0 Then
  50. PresmetkaDDV = Cena - Cena
  51. Else
  52. PresmetkaDDV = Cena - (Cena / DDVK(Stapka))
  53. End If
  54.  
  55. End Function
  56. Function Zaokruzi(Broj)  'za zaokruzuvajne na 4 decimali
  57. Zaokruzi = Round(Broj, 4)
  58. End Function
↑  ↓

#12 23.09.2013-15:21
zidar Offline
Moderator
Registrovan/a od: 03.02.2009-21:52
Komentari: 27


Subject: Re: stored procedure Kako?
Bez obzira na verziju MS SQL, mnogo bi ti bilo lakse da funkciju Function DDVK pretvoris u tabelu sa dve kolone
DownloadIzvorni kod (Text):
  1. CREATE TABLE DDVA_u_DDVK
  2. (
  3. DDVA int NOT NULL CHECK DDVA BETWEEN 1 AND25
  4. , DDVK decimal (6,2) NOT NULL
  5. , PRIMARY KEY (DDVA)
  6. , UNIQUE (DDVK)
  7.  
  8. )
Onda bi pisao manje koda u VB ili VBNET, svejedno. Ceo stos sa MS SQL je da se smanji pisanje koda. Takodje, kombinacja (Crystal,neki programski jezik) ne moze da tuce Access u generisanju i upravljanju reportima, bez obzira na bask end bazu. To je probano mnogo puta u praksi i redovno s zavrsavalo lose. Ako negde i radi, trazi jako mnogo rada na odrzavanju i konstantnom popravljanju problema koji se pojavljuju niotkuda.
↑  ↓

#13 23.09.2013-20:11
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
Ne rabotam jas sega vo Access tuku rabotam vo vb6 i cristal report , no ovie raboti sto gi baram gi imam koristeno vo accesot i sega baram kako ovi funkcii sto gi imam vo starite aplikcii da gi zamenam odnosno da gi importiram vo SQL.
Zatoa postaviv primer i cekam da dobijam nekakov predlog.
Neznam sega dali vo SQL Serverot moram sve da resavam so Tabeli , jas mislev deka vo funkcii vo SQL serverot moze da se pisuva nekoj slicen cod kako vo VBA ta .

Uslovite na koi rabotam se tie i jas bi sakal da mozam da gi koristam access raportite no ne mozam .
↑  ↓

#14 23.09.2013-20:13
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: stored procedure Kako?
Exporuj dvadesetak redova ove tabele iz SQL pa zakaci lakse je kada ima tabela.
Pozdrav
↑  ↓

#15 24.09.2013-09:11
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: stored procedure Kako?
U[eav da go resam ova .Moze da se gradat funkcii slicni kako VBA ta a vo SQL Serverot se vikaat Scalar-Valued Functions eve kako bi izgledala mojata funkcija DDVK kako SQL finkcija
DownloadIzvorni kod (SQL):
  1. FUNCTION [dbo].[DDVK]
  2. (
  3.         -- Add the parameters for the function here
  4.         @DDVA int
  5. )
  6. RETURNS decimal(18, 2)
  7. AS
  8. BEGIN
  9.  
  10.    IF @DDVA = 24  RETURN 1.24;
  11.    IF @DDVA = 23  RETURN 1.23;
  12.    IF @DDVA = 22  RETURN 1.22;
  13.    IF @DDVA = 21  RETURN 1.21;
  14.    IF @DDVA = 20  RETURN 1.2;
  15.    IF @DDVA = 19  RETURN 1.19;
  16.    IF @DDVA = 18  RETURN 1.18;
  17.    IF @DDVA = 17  RETURN 1.17;
  18.    IF @DDVA = 16  RETURN 1.16;
  19.    IF @DDVA = 15  RETURN 1.15;
  20.    IF @DDVA = 14  RETURN 1.14;
  21.    IF @DDVA = 13  RETURN 1.13;
  22.    IF @DDVA = 12  RETURN 1.12;
  23.    IF @DDVA = 11  RETURN 1.11;
  24.    IF @DDVA = 10  RETURN 1.1;
  25.    IF @DDVA = 9  RETURN 1.09;
  26.    IF @DDVA = 8  RETURN 1.08;
  27.    IF @DDVA = 7  RETURN 1.07;
  28.    IF @DDVA = 6  RETURN 1.06;
  29.    IF @DDVA = 5  RETURN 1.05;
  30.    IF @DDVA = 4  RETURN 1.04;
  31.    IF @DDVA = 3  RETURN 1.03;
  32.    IF @DDVA = 2  RETURN 1.02;
  33.    IF @DDVA = 1  RETURN 1.01;
  34.   /*
  35. If @DDVA = 0  return 0;
  36.   */
  37.  
  38.   RETURN 0;
  39.  
  40. END
↑  ↓

Stranice (3): 1, 2, 3


All times are GMT +01:00. Current time: 20.07.2018-03:53.