Search  
Friday, February 10, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Saritura la pen...
 Saritura la penultima inregistrare
 
 2/25/2009 1:18:28 PM
User is offlinechucki21
146 posts
5th


Saritura la penultima inregistrare
 (Romania)
Salut,

Ajutati-ma intr-o problema legata de comenzi  TSQL si anume cum ma pot pozitiona pe penultima inregistrare sau record-1(sa ma fac inteles :) ) dintr-o tabela avand id-ul
generat automat de genul 1,2,3,8,9,14


Va multumesc mult de tot

P.S. Exista vreo functie ce face saritura la inregistrarea dorita in caz ca fac <count (id) -1 > ?un fel de recno sau ceva de genul asta dar in TSQL.
 2/25/2009 1:54:49 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
 chucki21 wrote
Salut,

Ajutati-ma intr-o problema legata de comenzi  TSQL si anume cum ma pot pozitiona pe penultima inregistrare sau record-1(sa ma fac inteles :) ) dintr-o tabela avand id-ul
generat automat de genul 1,2,3,8,9,14


Va multumesc mult de tot

P.S. Exista vreo functie ce face saritura la inregistrarea dorita in caz ca fac ?un fel de recno sau ceva de genul asta dar in TSQL.

In SQL nu exista notiunea de "record", ci numai cea de "row". Cu alte cuvinte, in SQL liniile nu au o ordine fizica, cea in care au fost create, dar pot fi ordonate dupa un camp sau o combinatie de campuri
Pentru a gasi penultima linie dintr-o tabela trebuie sa existe un camp sau o expresie dupa care liniile sa poate fi ordonate dupa momentl crearii lor. In cazul tau, daca acel ID este strict crescator (nu se aloca nici un id mai mic decat cel mai mare ID existent anterior in tabela), se poate gasi penultima linie astfel:

SELECT * FROM tabela INNER JOIN
(SELECT  id, rownum=ROW_NUMBER() OVER (ORDER BY id DESC) FROM tabela ) aa
ON tabela.id=aa.id WHERE aa.rownum=2

De asemenea, notiunea de pozitionare pe inregistrare (GO TO ) nu exista in SQL. Cu comenzile SQL se poate extrage continutul unor linii (SELECT), se pot adauga linii (INSERT), actualiza (UPDATE) sau sterge (DELETE), dar nu exista nimic de genul SCAN ...ENDSCAN.


Daniel Buduru
 2/25/2009 2:03:20 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)
Multumesc dar imi da aceasta eroare 'ROW_NUMBER' is not a recognized function name.
 2/25/2009 2:08:45 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
Nu ai precizat ce server SQL folosesti. Daca te-ai referit la TSQL, ai un server MS SQL SERVER, iar ROW_NUMBER e valabil de la versiunea 2005 (sigur e in 2008). Se economiseste timp daca precizezi cu ce versiuni de soft lucrezi.

Daniel Buduru
 2/25/2009 2:22:17 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania) Modified By chucki21  on 2/25/2009 2:22:42 PM)
mii de scuze sql 2000 am (asta e licenta nu pot schimba)
 2/25/2009 2:22:26 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
Asta ar trebui sa functioneze cel putin in sql server 2000:

DECLARE @Temp TABLE (
    rownum int IDENTITY(1,1)
    , id int
)

INSERT INTO    @Temp
SELECT TOP 10 id FROM tabela ORDER BY id DESC

SELECT   tabela.*
FROM   tabela INNER JOIN @Temp aa ON tabela.id=aa.id
WHERE   aa.rownum = 2


Daniel Buduru
 2/25/2009 2:32:28 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania) Modified By chucki21  on 2/25/2009 2:35:40 PM)
multumesc frumos functioneaza dar daca tabelul meu are 1000 de inregistrari sau mai multe nu se pierde timp pt a se introduce datele in acea tabela temporara?exista vreo solutie mai scurta, comenzi mai putine..?:)
 2/25/2009 2:49:04 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
 chucki21 wrote
multumesc frumos functioneaza dar daca tabelul meu are 1000 de inregistrari sau mai multe nu se pierde timp pt a se introduce datele in acea tabela temporara?exista vreo solutie mai scurta, comenzi mai putine..?:)


Prea mult timp nu se pierde, daca te uiti in cod in tabela temporara am preluat doar ultimile 10 inregistrari (TOP 10).
Ar mai fi cateva solutii pentru numarul de linie, dar nu mai rapide.
Daca vrei mereu doar penultima inregistrare, se poate si asa ceva:

SELECT TOP 1 * FROM (SELECT TOP 2 * FROM tabela ORDER BY id DESC) aa ORDER BY id ASC



Daniel Buduru
 2/25/2009 3:03:31 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)
GOD !!!...asta era .cat de simplu si frumos...multumesc mult de tot
 2/25/2009 4:05:57 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)

O rugaminte mare de tot, ajutati-ma cu o idee macar, am un tabel format din foarte multe inregistrari.(sper ca s-a incarcat imagine rest.jpg) daca nu pe scurt tabelul este format din:

id(auto incrementare),alimentare, rest ,consum

Prima inregistrarea: [1,20,x,8]

A doua este  [2,10,y=(x+10-50),50]

A treia [3,5,z=(y+5-2),2]

Coloana REST se calculeaza ca : REST initial(randul anterior)+alimentare-consum (alimentarea si consumul sunt luate din randul curent)

Se intampla ca userul sa modifice datele undeva la mijlocul tabelului.

Doresc sa creez o procedura ca... dupa ce userul modifica datele, procedura respectiva sa ia tot tabelul,toate inregistrarile si sa le modifice automat.avand in vedere ca fiecare rand depinde de unul anterior.

Cum pot face acest lucru?

 2/25/2009 5:33:15 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A) Modified By Daniel Buduru  on 2/25/2009 5:36:25 PM)
Din pacate, solutii rapide in SQL nu prea sunt ... Problema se numeste "total cumulat" sau "running total"
Cea mai rapida solutie este in vfp.
Pentru sql server 2000 o metoda mai rapida (sintaxa e valida in sql 2008, nu am testat pe 2000) este asta:

DECLARE curRunningTotal
CURSOR LOCAL FAST_FORWARD FOR
SELECT
    id
    ,alimentare
    ,consum
FROM tabela
ORDER BY id;

OPEN curRunningTotal

DECLARE @id int
DECLARE @alimentare decimal(18,3)
DECLARE @consum decimal(18,3)
declare @rest decimal(18,3)
DECLARE @rest_precedent decimal(18,3)

declare  @crtstock table
(
id int NOT NULL PRIMARY KEY
,rest decimal(18,3)
)


FETCH NEXT FROM curRunningTotal
INTO @id, @alimentare, @consum

SET @rest_precedent= 0

WHILE @@FETCH_STATUS = 0
BEGIN
    set @rest=@rest_precedent+@alimentare-@consum
    INSERT @crtstock
    VALUES (@id, @rest)

    set @rest_precedent=@rest

    FETCH NEXT FROM curRunningTotal
    INTO @id, @alimentare, @consum
END

update tabela set rest=rr.rest
    from @crtstock rr
     where tabela.id=rr.id

CLOSE curRunningTotal

DEALLOCATE curRunningTotal

Poti crea o procedura cu acest cod, pe care sa o rulezi la nevoie. 
O posibilitate ar fi sa o executi intr-un trigger "After update" pe tabela "tabela", unde faci verificarea daca linia modificata este anterioara ultimei linii. Ceva de genul:

IF EXISTS (Select * FROM inserted WHERE inserted.id<(SELECT MAX(id) FROM TABELA))
  BEGIN
   ....   inserezi aici codul de mai sus
  END

Ar fi indicat ca acest total cumulat sa fie tinut intr-o tabela separata, care sa aiba campurile id si rest, si nu intr-o coloana din tabela cu miscarile (alimentare si consum).



Daniel Buduru
 2/26/2009 11:25:19 AM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)
Multumesc frumos inca nu l-am incercat din pacate nu pot folosi vfp dar am un vb deoarece aplicatia in care lucrez (ERP) are ca limbaj numai VBasic.
Dar avand in vedere ca limbajele ca algoritm sunt la fel, in VFP sau VB, ca idee te intreb, pot folosi un FOR? sau care ar fi fost ideea....

Multumesc
 2/26/2009 11:34:08 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
Nu m-am facut inteles bine. Ziceam ca in VFP se face cel mai rapid, dar codul pe care ti l-am dat este cod T-SQL, nu VFP.
Nu functioneaza ca atare nici in VFP, nici in VB, doar pe sql server.
Fie il pui intr-o procedura stocata pe server, fie il executi din SSM, sau in ce alt mod executi comenzi TSQL.
Incearca mai intai sa il pui intr-o procedura stocata.


Daniel Buduru
 2/26/2009 11:44:18 AM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)
Nu,..:) te-ai facut foarte bine inteles..multumesc mult pentru cod.
Ma intereseaza si ideea ca in VFP se face mult mai repede..de ce?deoarece eu lucrez cu VBasic limbajele sunt asemanatoare si ma interesa ideea ta de a rezolva problema in VFP astfel
mergand pe ideea ta sa incerc sa o rezolv eu in VBasic...

 2/26/2009 11:51:50 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A) Modified By Daniel Buduru  on 2/26/2009 11:53:52 AM)
Deosebirea majora intre VFP si VB este aceea ca VFP are un motor de baza de date incorporat.
Codul pentru VFP ar fi urmatorul:

SELECT 0
USE tabela SHARED
USE tabela ALIAS tabela_a SHARED AGAIN IN 0
SELECT tabela
GO TOP
SET RELATION TO RECNO()-1 INTO tabela_aa
REPLACE ALL rest WITH NVL(tabela_aa.rest,0)  +  tabela.alimentare - tabela.consum

Acum vezi de ce nu poate fi adaptat la VB.

Daniel Buduru
 2/26/2009 11:56:55 AM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania) Modified By chucki21  on 2/26/2009 12:05:20 PM)
:)...da...oricum iti multumesc mult pt. ajutor

O intrebare ce face
FETCH NEXT FROM curRunningTotal
INTO @id, @alimentare, @consum

SET @rest_precedent=0

WHILE @@FETCH_STATUS=0..sa inteleg si eu. procedura...
 2/26/2009 12:14:00 PM
User is offlineVictor Iuga
153 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)

In mod normal intr-o astfel de procedura in care fiecare rand depinde de precedentul n-ar trebui sa se insereze pozitii, da' se poate inampla.

In vfp as rezolva cu un index pe cheia dorita. Asta-mi asigura mereu ordinea corespuzatoare. In caz de inserare a unei pozitii noi, se pot recalcula  toate resturile, intr-o bucla SCAN sau DO WHILE, in nici un caz FOR (care nu se plimba prin tabele).. Eventual, ca sa mearga mai rapid recalcularea, pt tabele mari, se poate adapta bucla astfel incat sa plece numai de la pozitia inserata (cele anterioare raman oricum neschimbate). Daca-s mai multe inserari, recalcularea ar trebui pornita dupa ce s-au facut acestea, pornind de la prima.

Alta varianta, daca inserarile sunt ocazionale (si timpu nu-i to problema), in loc de indexi atasati, se poate lucra cu comenzi de sortare intr-o tabela (cursor) temporara, apoi golire si appendare din aceasta.

Astea ar fi ideeile, nu stiu prea bine cum ii in sql sau vb, da' ma gandesc ca tre sa fie o echivalenta.

 

 2/26/2009 12:21:43 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
Exista doua metode de a calcula un running total:
1 - Absoluta - totalul se claculeaza in fiecare inregistrare ca suma rulajelor inregistrarilor precedente
2 - Incrementala - totalul se calculeaza insumand totalul precedent cu rulajul curent
Prima metoda e lenta chiar si pe baze de date nu prea mari
A doua e rapida, dar necesita parcurgerea tabelei in ordinea cronologica a inregistrarilor.
In ms sql server cursorul este oarecum similar cu o tabela sau cursor vfp, in sensul ca are inregistrari: liniile sunt puse in cursor in ordinea in care se adauga, deci exista o ordine fizica a inregistrarilor.
Pentru metoda incrementala se foloseste un cursor, in care se copiaza datele necesare ordonate cronologic, si care se parcurge secvential

FETCH NEXT FROM cursor INTO @id, @alimentare, @consum
extrage urmatoarea inregistrare din cursor in variabile corespunzatoare campurilor cursorului

Variabila @rest_precedent tine totalul liniei precedente, total care la prima inregistrare este 0.

WHILE @@FETCH_STATUS=0
este o bucla (while) care se repeta atata vreme cat sunt inregistrari in cursor



Daniel Buduru
 2/26/2009 12:43:39 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)
Cum as putea sa fac o verificare mai precis; am 100 inregistrari si la inregistrarea 80 modific REST.
Astfel automat ar trebui ca de la inregistrarea 80 si pana la ultima inregistrare 100, pe baza
metodei de mai sus sa se refaca toate calculele astfel sa vad intr-un select mai apoi, modificarile efectuate.
Cum pot aplica?am la dispozitie numai un sql query analyzer.

multumesc mult de tot si imi cer scuze daca sunt insistent

 2/26/2009 1:07:35 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
-- Se poate si de la o anumita inregistrare. Am sa pun din nou codul, poti face copy /paste in query analyzer de la randul urmator :

-- daca se pune intr-o procedura, aceasta va trebui sa primeasca drept parametru id-ul liniei modificate. Aici am luat id=80, arbitrar
DECLARE @idstart int
SET @idstart=80

DECLARE crsRunningTotal
CURSOR LOCAL FAST_FORWARD FOR
SELECT
    id
    ,alimentare
    ,consum
FROM tabela
WHERE id>=@idstart
ORDER BY id;

OPEN crsRunningTotal

DECLARE @id int
DECLARE @alimentare decimal(18,3)
DECLARE @consum decimal(18,3)
declare @rest decimal(18,3)
DECLARE @rest_precedent decimal(18,3)

DECLARE @crtstock table
(
id int NOT NULL PRIMARY KEY
,rest decimal(18,3)
)


FETCH NEXT FROM crsRunningTotal
INTO @id, @alimentare, @consum

-- utilizezi una din variante:
-- restul precedent calculat ca suma rulajelor precedente)
SET @rest_precedent=(SELECT SUM(alimentare-consum) FROM tabela WHERE id<@id )

-- sau restul precedent din inregistrarea precedenta
SET @rest_precedent=(SELECT TOP 1 rest FROM tabela WHERE id<@id ORDER BY id DESC)

WHILE @@FETCH_STATUS = 0
BEGIN
    set @rest=@rest_precedent+@alimentare-@consum
    INSERT @crtstock
    VALUES (@id, @rest)

    SET @rest_precedent=@rest

    FETCH NEXT FROM crsRunningTotal
    INTO @id, @alimentare, @consum
END

-- Afisarea
SELECT tabela.*, aa.rest as 'rest nou'  FROM tabela INNER JOIN @crtstock aa ON tabela.id=aa.id

/* elimini comentariul daca vrei sa faca actualizarea tabelei
UPDATE tabela SET rest=rr.rest
    FROM @crtstock rr
     WHERE tabela.id=rr.id
*/

CLOSE crsRunningTotal
DEALLOCATE crsRunningTotal




Daniel Buduru
 2/26/2009 1:33:44 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania)
Multumesc mult de tot, am incercat sa mai adaug un criteriu de selectie adica modificarea (calcularea restului) sa nu se faca la toate inregistrarile din tabela ci doar la acelea ce respecta si conditia
carid=(valoare de tip int) .Se modifica linia cu id-ul 80 ok de la 80 pana la 100 sa modifice doar acele inregistrari ce contin de exemplu carid=11.
Unde pot pune aceasta conditie sau up-date-ul sa se faca la toate liniile ce contin carid=11.

Multumesc inca odata pt. rabdare
 2/26/2009 1:46:32 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
/*
Deja s-au schimbat datele problemei
Nu poti calcula un total cumulat pe sarite. Toate inregistrile din sir trebuie actualizate.
Nu poti nici sa-l calculezi doar pe un interval cuprins in interiorul sirului, ci doar de la un anumit moment pana la capat ...
Se poate insa calcula totalul pe un subset de inregistrari, cele care satisfac o anumita conditie, dar tot asa, de la o inregistrare din subset (fie ea si prima) pana la ultima inregistrare din subset.
In acest caz, se mai pune o conditie de filtru la popularea cursorului si la calculul totalului precedent.
Pun din nou tot codul, ca sa-l poti utiliza ca atare in SQA
*/

-- daca se pune intr-o procedura, aceasta va trebui sa primeasca drept parametru id-ul liniei modificate si carid
DECLARE @idstart int
DECLARE @carid int
SET @idstart=80
SET @carid=11

DECLARE crsRunningTotal
CURSOR LOCAL FAST_FORWARD FOR
SELECT
    id
    ,alimentare
    ,consum
FROM tabela
WHERE id>=@idstart and carid=@carid
ORDER BY id;

OPEN crsRunningTotal

DECLARE @id int
DECLARE @alimentare decimal(18,3)
DECLARE @consum decimal(18,3)
declare @rest decimal(18,3)
DECLARE @rest_precedent decimal(18,3)

DECLARE @crtstock table
(
id int NOT NULL PRIMARY KEY
,rest decimal(18,3)
)


FETCH NEXT FROM crsRunningTotal
INTO @id, @alimentare, @consum

-- utilizezi una din variante:
-- restul precedent calculat ca suma rulajelor precedente)
SET @rest_precedent=(SELECT SUM(alimentare-consum) FROM tabela WHERE id<@id and carid=@carid )

-- sau restul precedent din inregistrarea precedenta
SET @rest_precedent=(SELECT TOP 1 rest FROM tabela WHERE id<@id and carid=@carid ORDER BY id DESC)

WHILE @@FETCH_STATUS = 0
BEGIN
    set @rest=@rest_precedent+@alimentare-@consum
    INSERT @crtstock
    VALUES (@id, @rest)

    SET @rest_precedent=@rest

    FETCH NEXT FROM crsRunningTotal
    INTO @id, @alimentare, @consum
END

-- Afisarea
SELECT tabela.*, aa.rest as 'rest nou'  FROM tabela INNER JOIN @crtstock aa ON tabela.id=aa.id

/* elimini comentariul daca vrei sa faca actualizarea tabelei
UPDATE tabela SET rest=rr.rest
    FROM @crtstock rr
     WHERE tabela.id=rr.id
*/

CLOSE crsRunningTotal
DEALLOCATE crsRunningTotal


Daniel Buduru
 2/26/2009 1:58:02 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania) Modified By chucki21  on 2/26/2009 1:59:23 PM)
id     alimentare   consum    rest
38    0.0            12.21      21.02
39    0.0            12.86     -25.07
40    21             10.80    -14.85
41    0.0              7.09     -21.95
42    33              26.42    -15.09

Acestea sunt datele atunci cand introduc pt id=38 rest=21.02 si ar trebui sa refaca toate calculele pana la 42 pt carid=11.
Problema este ca nu prea ies calculele..adica pt. id=39 ar trebui sa REST=21.02+0-12.86=8.16 iar in tabel dupa cum observati iese -25.07.
pt calcul id=39 alimentarea si consumul sunt cele de pe randul cu id=39 doar restul este cel de la id=38.



 2/26/2009 2:06:39 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania) Modified By chucki21  on 2/26/2009 2:06:53 PM)
mii de scuze aveam de ales intre doua variante de calcul...nu am observat-o pe a doua..acum merge
Inca odata multumesc mult de tot ...
 2/26/2009 2:16:55 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
Cele doua variante ar fi trebuit sa dea acelasi rezultat  ... ceva nu e bine daca sunt diferite.
Cu riscul de a ma repeta, acest rest ar trebui tinut intr-o tabela separata, si nu in cea cu alimentare si consum.

Daniel Buduru
 2/26/2009 2:32:13 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Saritura la penultima inregistrare
 (N/A)
-- Cred ca am gasit eroarea, varianta a doua intorcea null daca nu exista inregistrarea precedenta. Incearca din nou cu acest cod:


DECLARE @idstart int
DECLARE @carid int
SET @idstart=80
SET @carid=11

DECLARE crsRunningTotal
CURSOR LOCAL FAST_FORWARD FOR
SELECT
    id
    ,alimentare
    ,consum
    ,rest
FROM tabela
WHERE id>=@idstart and carid=@carid
ORDER BY id;

OPEN crsRunningTotal

DECLARE @id int
DECLARE @alimentare decimal(18,3)
DECLARE @consum decimal(18,3)
declare @rest decimal(18,3)
DECLARE @rest_precedent decimal(18,3)

DECLARE @crtstock table
(
id int NOT NULL PRIMARY KEY
,rest decimal(18,3)
)


FETCH NEXT FROM crsRunningTotal
INTO @id, @alimentare, @consum

-- utilizezi una din variante:
-- restul precedent calculat ca suma rulajelor precedente)
-- SET @rest_precedent=(SELECT SUM(alimentare-consum) FROM tabela WHERE id<@id and carid=@carid )

-- sau restul precedent din inregistrarea precedenta
SET @rest_precedent=ISNULL(SELECT TOP 1 rest FROM tabela WHERE id<@id and carid=@carid ORDER BY id DESC),0)

WHILE @@FETCH_STATUS = 0
BEGIN
    set @rest=@rest_precedent+@alimentare-@consum
    INSERT @crtstock
    VALUES (@id, @rest)

    SET @rest_precedent=@rest

    FETCH NEXT FROM crsRunningTotal
    INTO @id, @alimentare, @consum
END

-- Afisarea
SELECT tabela.*, aa.rest as 'rest nou'  FROM tabela INNER JOIN @crtstock aa ON tabela.id=aa.id

/* elimini comentariul daca vrei sa faca actualizarea tabelei
UPDATE tabela SET rest=rr.rest
    FROM @crtstock rr
     WHERE tabela.id=rr.id
*/

CLOSE crsRunningTotal
DEALLOCATE crsRunningTotal





Daniel Buduru
 2/26/2009 3:03:19 PM
User is offlinechucki21
146 posts
5th


Re: Saritura la penultima inregistrare
 (Romania) Modified By chucki21  on 2/26/2009 3:14:03 PM)
1.Am sa va ascult sfatul dar daca se poate sa-mi explicati de ce anume trebuie tinut separat?
2. Stiu SQL la nivel de incepator de aceea introducerea acelei comenzi FETCH m-a dat peste cap, nu stiam la ce foloseste.Acum incerc sa inteleg codul dvs si procedura de calcul pentru
ca daca nu inteleg degeaba pun copy / paste...asa ca in mod sigur va mai dura pana cand am sa ma apuc efectiv de ceea ce doresc sa repar (o aplicatie realizata de mine inainte pentru servici).
Este foarte interesant codul dvs, va multumesc, dar doresc sa-l inteleg....daca ma puteti ajuta cu un rezumat dar nu pe comezi(fiecare comanda comentata) ...ci exact cum ati gandit algoritmul.
Citit pe fuga(recunosc) am inteles ca acest cursor se creeaza atunci cand se doreste parcurgerea tuturor elementelor dintr-o tabela exact cum domnul de mai devreme a popus functia scan.
Putine detalii daca puteti sa ma ajutati...dar atunci cand aveti timp

Multumesc inca odata mult

P.S. Aceasta formula da gresit am observat SET @rest_precedent=(SELECT SUM(alimentare-consum) FROM tabela WHERE id<@id and carid=@carid )
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Saritura la pen...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement