Centar za edukaciju-BiH



#11 20.09.2013 13:40
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet: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
PreuzmiIzvorni kôd (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
PreuzmiIzvorni kôd (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 Van mreze
Moderator
Registrovan od:03.02.2009
Postovi:27


Predmet: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
PreuzmiIzvorni kôd (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 Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet: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 Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: stored procedure Kako?
Exporuj dvadesetak redova ove tabele iz SQL pa zakaci lakse je kada ima tabela.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#15 24.09.2013 09:11
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet: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
PreuzmiIzvorni kôd (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
↑  ↓

#16 24.09.2013 10:05
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: stored procedure Kako?
Koliko ja vidim netrebaju ti silni ifovi.
Moze se to ovako rijesiti.
DDVK=DVA/100+1

Imas ti i ovdje neku proceduru u vb koliko vidim:
Format(BezDDV([Ed_Cena],[DDV]),"Fixed") AS Ed_Cena_Bez_DDV

Najbolje bi bilo da zakacis bar to sto imas u accessu.
Tesko je napraviti ponovo tabelu i popuniti podacima koje neznas.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#17 24.09.2013 11:09
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: stored procedure Kako?
ok ne e problem ke ja zakacam bazata no ova sto go rabotam e samo vezbajne sega odnosno se pripremam za ona sto me ceka.
Sakam da vidam kako ke se snaogam so ova novo nesto za mene
eve i baza

Prilozi:
Informacije o tipu datoteke za:rar  Data.rar
Preuzimanja:327
Velicina datoteke:413.01 KB

↑  ↓

#18 26.09.2013 18:55
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: stored procedure Kako?
Tvoj Query sto si naveo ima jos procedura koje nisi dao pa sam ja napravio jednu srored proceduru kao primjer pa se nadam da ce ti pomoci da napravis ono sto zelis.
Ovu tored proceduru postavi u svoju bazu MsSQL.
PreuzmiIzvorni kôd (SQL):
  1. CREATE PROCEDURE ArtikalBR @ID INT
  2. AS
  3. SELECT  
  4. ID_Artikal,
  5. Artikal_Sifra,
  6. Artikal_Ime,
  7. Artikal_Prodazna_cena,
  8. Artikal_DDV,
  9. (Artikal_Prodazna_cena*Artikal_DDV) AS CENA
  10. FROM tblArtikli
  11. WHERE ID_Artikal=@id
  12. GO

Ovo ide u VB.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function RSArtikla(IDArt As Integer)
  2.      
  3. Dim Kon As New ADODB.Connection
  4. Dim Rs As New ADODB.Recordset
  5. Dim SQL As String
  6. Dim strUserName As String, strPassWord As String, strDatabase As String, strServer As String
  7.  
  8.  
  9.     strUserName = "Ime"
  10.     strPassWord = "Sifra"
  11.     strDatabase = "Baza"
  12.     strServer = "ImeTvogServera"
  13.    
  14.         Kon.CursorLocation = adUseClient
  15.         Kon.Open "Provider=MSDASQL; DRIVER=Sql Server; SERVER=" & strServer & "; DATABASE=" _
  16.         & strDatabase & "; UID=" & strUserName & "; PWD=" & strPassWord & ";"
  17.        
  18.         Set Rs = New ADODB.Recordset
  19.         SQL = "EXECUTE ArtikalBR " & IDArt
  20.         Rs.Open SQL, Kon, adOpenKeyset
  21.         MsgBox Rs!Artikal_Ime & "----" & Rs!CENA
  22.         Kon.Close    
  23.     End Function

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#19 27.09.2013 14:05
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: stored procedure Kako?
Jas se izvinuvam mislev deka sum go stavil resenieto bidejki ova go resiv ne e dovrseno no izrabotiv stored procedura koja sega zasega bi trebalo da zadovoli eden del od potrebite.
Eve vaka go resiv ova :
Tocno deka vo ova moe queri ima i drugi funkcii koi vo osnova se site slicni i imaat slicna namena a toa e presmetka na DDV i ceni BEZ DDV i ceni SO DDV .
Eve Stored kako izgleda:
PreuzmiIzvorni kôd (SQL):
  1. Proc [dbo].[spPLT]
  2. @IDFaktura INT
  3. AS
  4. BEGIN
  5.  
  6. SELECT
  7.         tblFaktura_Stavki.ID_Stavka
  8.       , tblFaktura_Stavki.Barkod
  9.       , tblArtikli.Artikal_Ime AS Stavka
  10.       , tblFaktura_Stavki.Ed_Mera
  11.       , tblFaktura_Stavki.Ed_Cena
  12.       , tblFaktura_Stavki.Kolicina
  13.       , tblFaktura_Stavki.Popust
  14.       , tblFaktura_Stavki.DDV
  15.       , tblFaktura_Stavki.Posledna_Prod_Cena AS Prodazna_So_DDV
  16.       , tblFaktura_Stavki.Ed_Cena*tblFaktura_Stavki.DDV AS VkunoNabavnaSoDDV
  17.       , CAST(isnull(tblFaktura_Stavki.DDV,0) AS DECIMAL) / 1000 AS DDVrocent
  18.       , (dbo.PresmetkaDDV (tblFaktura_Stavki.Ed_Cena,tblFaktura_Stavki.DDV))*tblFaktura_Stavki.Kolicina AS VkDDV  
  19.      -- , (dbo.PresmetkaDDV (180.5,tblFaktura_Stavki.DDV))* tblFaktura_Stavki.Kolicina as VkDDV  
  20.       , tblFakturi.ID_Faktura
  21.       , tblFakturi.Faktura_Broj
  22.       , tblFakturi.Tip_Faktura
  23.       , tblFakturi.DATA
  24.       , tblFakturi.Valuta
  25.       , tblFakturi.Po_Dokument
  26.       , tblFakturi.Magacin
  27.       , tblKomitenti.Komitent_Firma
  28.       , tblFakturi.Komitent_Partner
  29.       , tblFakturi.VoMagacin
  30.    
  31. FROM tblArtikli INNER JOIN (tblKomitenti INNER JOIN (tblFakturi INNER JOIN tblFaktura_Stavki ON tblFakturi.ID_Faktura = tblFaktura_Stavki.Faktura_Br) ON tblKomitenti.ID_Komitent = tblFakturi.Komitent_Partner) ON tblArtikli.ID_Artikal = tblFaktura_Stavki.Stavka
  32. WHERE tblFakturi.ID_Faktura = @IDFaktura
  33. ORDER BY tblFaktura_Stavki.ID_Stavka;
I dvete funkcii
PreuzmiIzvorni kôd (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
  41.  
  42. UNCTION [dbo].[PresmetkaDDV]
  43.                (@Cena FLOAT , @Stapka INT)
  44. --RETURNS decimal(18, 8)
  45. RETURNS FLOAT
  46. AS
  47. BEGIN
  48.   IF @Stapka = 0  RETURN @Cena - @Cena;
  49.   IF @Stapka <> 0  RETURN @Cena - (@Cena / dbo.DDVK(@Stapka));
  50.  
  51.   /*
  52. If @DDVA = 0  return 0;
  53.   */
  54.  
  55.  RETURN 0;
  56.  
  57. END

go vidov i ona predhodno sto mi predlozi za ovaj koeficient sto go koristam za presmetka no toa ne mi e prakticno bidejki koeficientot vo ovaj slucaj se dvizi od 1.01 do 1.24 no nekogas mi treba da bode 0.01 ili razlicno od ova no toa ne e bitno sega bidejki ova za pocetok e odlicno skolo ,isto taka interesno e toa sto go zabelezav dokolku mnozis delis ili vrsis nekoi operacii na dva podatoci od tipot na Float i Integer togas dobivas nevaliden podatok moze da bide bez decimali ili ako e pomal od 1 togas dobivas 0 ( Zaklicaok vo SQL server sekogas vrsi operacii nad isti tip na podatok ).
Ovaa tema nema da ja zatvoram ke imam uste prasajna no neznam kako ke se odvivaat rabotite .

I uste edna molba Dali moze eden primer od Cristal Report odnosno Report i Subreport koi imaat
dva razlicni DataSource od dve stored proceduri odnosto mi treba na primer Faktura kako Report i
Rekapitulacija kako Subreport koja ke sodrzi nekoi grupirani i sumirani stavki od fakturata.
pozdrav
↑  ↓

#20 27.09.2013 14:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: stored procedure Kako?
Imas visual linking export pa tables i dodas novu tabelu ili query.
E sad mozes dodati i group section ako su podaci napr 1-vise.
Dali moze sub report kao kod accessa to neznam a i nisam naisao da treba.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (4):1,2,3,4


Sva vremena su GMT +01:00. Trenutno vrijeme: 9: 44 am.