1

Konu: SQL server'daki IDENTITY

cetinbasoz yazdı:

Bu fieldin data tipi tartisma konusu. Genelde kullanilan (VFP,SQL server, Access, Oracle ...) integer (32 bit tam sayi). VFP9 (8miydi acaba)'dan beri AutoInc diye bir ozellik var. Bu ozellik istediginiz integer alanlara kurulabiliyor ve VFP tarafindan otomatik olarak arttirilan bir sayi saglaniyor (SQL server'daki IDENTITY).
Benim tavsiyem integer kullanmayin ve autoinc'i hic kullanmayin (bu arada ben kullandim ve hala kullaniyorum ama benden once kullanilmaya baslamisti ve hala soyleniyorum niye bunu kullaniyoruz diye). Bence ideal data tipi 38 uzunlugunda karakter. 38 tabii gokten zembille inen bir deger degil.
GUID - Globally Unique IDentifer. Bu bir standard. Versiyonlari gelisiyor ve sanirim su anda 4. versiyonunda. GUID degeri, dunyanin neresinde olursa olsun, bir makinenin olusturabilecegi (network'e bagli olmasa bile) ve bir baska esinin olamayacagi garanti edilen 128 bitlik bir sayi. Tarih/saat/makinenin network karti versiyona gore isin icinde olabilir ya da olmayabilir.


selamlar;

SQL de tüm table larımda guid var ve bunlara otomatik guid aldırıyorum.
Ancak fatura satırı ve benzeri yerlerde sıra numarasına ihtiyaç duyuluyor. Veya log dosyasında sıra numarası olmadığı zaman sıralamayı guid e göre yaparsam yanlış oluyor tarihsaat kullanmak istemiyorum. 
Kısaca bana sirano veya kayit no  "recno()"  lazim SQL server'daki IDENTITY kullanıyorum.(biliyorum ki yanlış diyeceksiniz.) çözüm bekliyorum.

Bilmediğin Neyse Yanıldığındır.

2

Re: SQL server'daki IDENTITY

SiraNo adında bir field açsan ve SiraNo yu bir stored procedure e bağlasan ve her yeni kayıtta SiraNo = Count(Table) gibi bir kullanım  şekli olmuyormu.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3 Son düzenleyen, cetinbasoz (05.06.2008 14:40:06)

Re: SQL server'daki IDENTITY

IDENTITYi gene kullanabilirsin, hatta onunla clustered index bile yapabilirsin. IDENTITY'nin primary key olmasi gerekir yanilgisina kapilma (ki zaten yalniz basina unique olmayi garanti etmez).
SQL2005 ve sonrasi ise row_number() var, istedigin siralamada hayali satir numaralari koyar.

Not: Bu arada neden ihtiyacin oldugunu aslinda anlamadan salladim:)

4

Re: SQL server'daki IDENTITY

cetinbasoz yazdı:

Not: Bu arada neden ihtiyacin oldugunu aslinda anlamadan salladim:)


aynı soruyu bende sormuştum. cevap verirken nedenini anlamadığınızı söylemiştiniz.

Adet     Cinsi    Fiyat   Tutar
-----------------------------------
1       Elma
8       Armut
23     üzüm

şeklinde giriş yapılan faturayı, döktürürken sıralamanında aynı olmasını istiyor kullanıcılar.

5

Re: SQL server'daki IDENTITY

cetinbasoz yazdı:

IDENTITYi gene kullanabilirsin, hatta onunla clustered index bile yapabilirsin. IDENTITY'nin primary key olmasi gerekir yanilgisina kapilma (ki zaten yalniz basina unique olmayi garanti etmez).
SQL2005 ve sonrasi ise row_number() var, istedigin siralamada hayali satir numaralari koyar.

Not: Bu arada neden ihtiyacin oldugunu aslinda anlamadan salladim:)


SQL
SELECT *, ROW_NUMBER() OVER ( ORDER BY sadi) AS RowNumber FROM gcsatir


ile satir no alıyor ama bu datanın gerçek satir numarası değil. cursor ün numarası.

Bana lazım olan (eğer IDENTITY kullanmıyacaksam) dbf de ki recno() karşılığıdır. erdal ın dediği gibi fatura satırlarının ilk girildiği sırada olabilmedi için sırano şart.

SQL de recno() veya benzeri yoksa.IDENTITY kullanmaya devam edeceğim.

Bilmediğin Neyse Yanıldığındır.

6

Re: SQL server'daki IDENTITY

Sorun su ki, aslinda VFP'de de recno() yok. VFP varmis gibi gosterdiginden kafa karistiriyor.
VFPdeki recno sonucta kaydin girilis sirasina uyuyor. Bir adet datetime kolon ekleyip ona default getdate() koyarsan ayni isi gorecek. Ya da IDENTITY yap daha fazla kafa karistirmasin:)
Senin istedigin aslinda fatura satir no gibi birsey anladigim, o zaman onu field olarak ekle ve degerini kendin ver. IDENTITY'nin isi degil bence.

Bir de SQL serverda (2005 ve sonrasi, NewSQuentialID var).

7 Son düzenleyen, mrduyar (06.06.2008 08:14:15)

Re: SQL server'daki IDENTITY

çok teşekkürler

Bilmediğin Neyse Yanıldığındır.

8

Re: SQL server'daki IDENTITY

bu konunun devamı olduğunu düşünüyorum.
Bir stok programım (FIFO) var. Çetin'in sql dolduruşundan sonra şirketteki bütün yazılımları sql'e (2008) uyguluyorum.
sütunlar özetle tarihe göre indeksli:
tarih    giriş    çıkış    devir   (birim maliyet  .. bu sütunlar önemsiz,satır içinde hesaplanıyor)
-----   -----     ------   ------  (-----------------------------------------------------------------------)

program yapısı icabı herhangi bir tarihe değişiklik veya data girince değişiklik tarihinden itibaren devir hesaplıyor, fifo'ya göre maliyetleri çıkarıyor, raporlarda işletme maliyetlerine yansıyor.

SQL yapısında bunun bir stored procedure olmasını düşünüyorum (*1), çünkü bir data girince sonrası tarihte sütunları network trafiğine ihtiyaç olmadan doldursun. burayı daha beceremedim: deviri SCAN... ENDSCAN mantığı dışında çözemedim. (*2)

Eğer stored procedure şeklinde çözülyor ise de client hesaplarının SQLservere yüklenmesi için satırların idsi (*3) gerekiyor.

(*) işaretli ayrımlar için değerli önerilerinizi - varsa sql kodlarınızı bekliyorum.

VFP9 SP2

9

Re: SQL server'daki IDENTITY

Bu ornek Jeff Moden'in SQLServerCentral'da verdigi bir koddan uyarlama. O ornek hosuma gittigi icin dogrudan onu veriyorum:
Ornek tablo yaratip doldurma kismi:

SQL
CREATE TABLE devirTest 

        ( rownum int identity,
        hesapID int NOT NULL,
        tarih  DATETIME NOT NULL,
        giris    MONEY   NULL,
        cikis    MONEY   NULL,
        devir    money        )
 
--===== Add the primary key
ALTER TABLE devirTest ADD PRIMARY KEY NONCLUSTERED (RowNum)
 
--===== Add the "sorting index" to the table
CREATE CLUSTERED INDEX IX_Tarih ON devirTest (hesapId,tarih)
 
--===== Build the table 100 rows at a time to "mix things up"
DECLARE @Counter INT
    SET @Counter = 0
  WHILE @Counter < 10000
  BEGIN
        --===== Add 1000 rows to the test table
         INSERT INTO devirTest
                (hesapID, giris, cikis, tarih)
         SELECT TOP 100
                hesapID = ABS(CHECKSUM(NEWID()))%100+1,
                giris   = CAST(CHECKSUM(NEWID())%10000 /100.0 AS MONEY),
                cikis   = CAST(CHECKSUM(NEWID())%10000 /100.0 AS MONEY),
                Tarih    = CAST(RAND(CHECKSUM(NEWID()))*3653.0+36524.0 AS DATETIME)
           FROM Master.dbo.SysColumns t1
          CROSS JOIN Master.dbo.SysColumns t2
 
        --===== Increment the counter
            SET @Counter = @Counter + 100
    END
GO

Not: SysColumns t2, t2 cok kullanilan bir "numara". O tablolar SQL server'da daima var ve icinde tum tablolarin kolonlari kadar kayit var. Kendi kendisiyle join edilince tek harekette kayit sayisinin karesi kadar bedavadan kayit elde ediliyor. 100'luk bloklar halinde yapilmis ornekte. Tek tek insert edilse SQL server'da bu bir omur surer.

Bu tabloda 1'den fazla hesap, tarih, giris, cikis, devir var. Devir'i guncelleyen kod:

SQL
--===== Declare the variables for the "Code Basis"

DECLARE @devir MONEY --Overall running total
    SET @devir = 0
DECLARE @hesapID INT   --The "anchor" and "account change detector"
    SET @hesapID = 0
 
--===== Solve 2 types of Running Total and 2 types of Running Count problems
     -- using a single update based on a Clustered Index at VERY high speeds.
UPDATE devirTest
    SET --===== Running Total
        @devir  = devir = @devir + (giris - cikis),
        @hesapID = hesapID
   FROM devirTest WITH (INDEX(IX_tarih),TABLOCKX)

10

Re: SQL server'daki IDENTITY

öncelikle teşekkürler...
verdiğin tablo doldurma kodunu önce çalıştırdım, sonra  devirTest i bulamadım.
hangi database altına default yazacağı hakkında fikrin var mı ?

(sonradan başına USE deneme ekleyince benim deneme database içine devirtest'i açtı)

VFP9 SP2

11

Re: SQL server'daki IDENTITY

Default da korkarim master aciliyor.

12

Re: SQL server'daki IDENTITY

son kod çok etkili (etkileyici) çalıştı.

Devamında işin içinden çıkamadım:
FIFO mantığında ilk giren maliyeti imalat için kullanıldığı sürece (makineye hammdde şarj edildiği kadar) günlük yansıtılıyor.
VFP tabloları ile gene SCAN ... ENDSCAN her satınalımdan ne kadar kaldı ise o kadarını günlük gidere koyarak raporlar ve bağlantılı programlar çalışıyordu.

Aşağıda bir stok örnek tabloyu açıklıyorum, sonraki postta 5 numaralı stok için gerçek datayı koydum.
SQL ile çözebilirmiyim ? yoksa gene RowId veya benzer verip, program içinden SCAN.. ENSCAN ile ilgili RowId'yi UPDATE mi yapmalıyım ?

gir1çik2:: stok girişi=1, çıkışı=2, 0 ise yılbaşı devri için sanal kayıt olarak kullanıyorum.

kullan ve birim_tl :: (burayı çözemedim)
halen o stok varsa çıkışa o stoğun birim maliyeti * miktarı = birim_tl ye yazıyor (terminoloji pek doğru değil -günlük gider olmalı idi)     
- olarak da girişi DTOS(tarih) olarak işaretliyorum - sadece bilgi, önemli değil)

datayı vurgulama nedenim, örneğin 12.12.2007 tarihinde satınalım yapıldığında 6 devir var, sonraki kullanımlar eski fiyattan gidere yansıtılıyor.

stokod    gir1çik2    tarih             miktar    kullan    devir    birim_tl
5    0    01.01.2007    0    0    0    0
5    1    30.11.2007    11    11    11    24
5    2    01.12.2007    -1    -20071130    10    24
5    2    05.12.2007    -1    -20071130    9    24
5    2    07.12.2007    -1    -20071130    8    24
5    2    09.12.2007    -1    -20071130    7    24
5    2    11.12.2007    -1    -20071130    6    24
5    1    12.12.2007    10    10    16    24
5    2    13.12.2007    -1    -20071130    15    24
5    2    15.12.2007    -1    -20071130    14    24
5    2    17.12.2007    -1    -20071130    13    24
5    2    22.12.2007    -1    -20071130    12    24
5    2    23.12.2007    -1    -20071130    11    24
5    2    25.12.2007    -1    -20071130    10    24
5    2    27.12.2007    -2    -20071212    8    48

Not: Bu tantana neden diye sorarsanız, şirketin bazı ürünlerde birim satışı 0,03 TL, karlılık virgülden sonra oluşuyor. Yani günlük raporlar değerlendirilmezse hemen -ye geçebiliyor !

umarım evödevimi sizlere yaptırdığımı düşünmüyorsunuz, saatlerdir çözemedim .
peşinen teşekkürler... :}

VFP9 SP2

13

Re: SQL server'daki IDENTITY

CreateCursor_CURSTEM()

Procedure CreateCursor_CURSTEM
LOCAL lcData, lcTemp
lcTemp = SYS(2015)+'.tmp'
TEXT TO m.lcData noshow
5,0,01.01.2007,0,0,000000,0,0,000000,0,0,0
5,1,30.11.2007,11,11,000000,11,24,000000,2,7,21
5,2,01.12.2007,-1,-20071130,000000,10,24,000000,19,9,21
5,2,05.12.2007,-1,-20071130,000000,9,24,000000,19,9,21
5,2,07.12.2007,-1,-20071130,000000,8,24,000000,19,9,21
5,2,09.12.2007,-1,-20071130,000000,7,24,000000,19,9,21
5,2,11.12.2007,-1,-20071130,000000,6,24,000000,19,9,21
5,1,12.12.2007,10,10,000000,16,24,000000,2,7,21
5,2,13.12.2007,-1,-20071130,000000,15,24,000000,19,9,21
5,2,15.12.2007,-1,-20071130,000000,14,24,000000,19,9,21
5,2,17.12.2007,-1,-20071130,000000,13,24,000000,19,9,21
5,2,22.12.2007,-1,-20071130,000000,12,24,000000,19,9,21
5,2,23.12.2007,-1,-20071130,000000,11,24,000000,19,6,21
5,2,25.12.2007,-1,-20071130,000000,10,24,000000,19,9,21
5,2,27.12.2007,-2,-20071212,000000,8,48,000000,19,9,21
5,2,29.12.2007,-1,-20071212,000000,7,24,000000,19,9,21
5,2,29.12.2007,-1,-20071212,000000,6,24,000000,19,6,21
5,0,01.01.2008,0,0,000000,6,0,000000,0,0,0
5,1,04.01.2008,5,5,000000,11,24,000000,2,7,21
5,2,04.01.2008,-1,-20080104,000000,10,24,000000,19,6,21
5,2,04.01.2008,-1,-20080104,000000,9,24,000000,19,9,21
5,2,08.01.2008,-1,-20080104,000000,8,24,000000,19,9,21
5,2,10.01.2008,-1,-20080104,000000,7,24,000000,19,9,21
5,2,12.01.2008,-1,-20080104,000000,6,24,000000,19,9,21
5,2,14.01.2008,-1,0,000000,5,24,000000,19,9,21
5,2,14.01.2008,-1,0,000000,4,24,000000,19,6,21
5,1,15.01.2008,10,10,000000,14,24,000000,2,7,21
5,2,16.01.2008,-1,-20080115,000000,13,24,000000,19,9,21
5,2,18.01.2008,-2,-20080115,000000,11,48,000000,19,9,21
5,2,22.01.2008,-1,-20080115,000000,10,24,000000,19,9,21
5,2,22.01.2008,-1,-20080115,000000,9,24,000000,19,6,21
5,2,24.01.2008,-1,-20080115,000000,8,24,000000,19,9,21
5,2,28.01.2008,-1,-20080115,000000,7,24,000000,19,6,21
5,2,03.02.2008,-1,-20080115,000000,6,24,000000,19,9,21
5,2,07.02.2008,-1,-20080115,000000,5,24,000000,19,6,21
5,2,09.02.2008,-1,-20080115,000000,4,24,000000,19,9,21
5,2,13.02.2008,-1,0,000000,3,24,000000,19,9,21
5,2,13.02.2008,-1,0,000000,2,24,000000,19,6,21
5,2,17.02.2008,-1,0,000000,1,24,000000,19,9,21
5,2,25.02.2008,-1,0,000000,0,24,000000,19,6,21
5,1,03.03.2008,10,10,000000,10,24,000000,2,7,21
5,2,03.03.2008,-1,-20080303,000000,9,24,000000,19,6,21
5,2,05.03.2008,-1,-20080303,000000,8,24,000000,19,9,21
5,2,07.03.2008,-1,-20080303,000000,7,24,000000,19,9,21
5,2,13.03.2008,-1,-20080303,000000,6,24,000000,19,9,21
5,2,15.03.2008,-1,-20080303,000000,5,24,000000,19,9,21
5,2,20.03.2008,-1,-20080303,000000,4,24,000000,19,9,21
5,2,20.03.2008,-1,-20080303,000000,3,24,000000,19,6,21
5,1,21.03.2008,10,10,000000,13,24,000000,2,7,21
5,2,22.03.2008,-1,-20080303,000000,12,24,000000,19,9,21
5,2,25.03.2008,-1,-20080321,000000,11,24,000000,19,6,21
5,2,25.03.2008,-2,-20080303,000000,9,48,000000,19,9,21
5,2,26.03.2008,-2,-20080321,000000,7,48,000000,19,9,21
5,2,26.03.2008,-1,-20080321,000000,6,24,000000,19,6,21
5,2,27.03.2008,-1,-20080321,000000,5,24,000000,19,9,21
5,2,28.03.2008,-2,-20080321,000000,3,48,000000,19,9,21
5,2,29.03.2008,-1,-20080321,000000,2,24,000000,19,9,21
5,2,30.03.2008,-2,-20080321,000000,0,48,000000,19,9,21
5,1,01.04.2008,15,15,000000,15,24,000000,2,7,21
5,2,03.04.2008,-1,-20080401,000000,14,24,000000,19,9,21
5,2,04.04.2008,-1,-20080401,000000,13,24,000000,19,6,21
5,2,04.04.2008,-1,-20080401,000000,12,24,000000,19,9,21
5,2,05.04.2008,-1,-20080401,000000,11,24,000000,19,9,21
5,2,06.04.2008,-1,-20080401,000000,10,24,000000,19,9,21
5,2,07.04.2008,-1,-20080401,000000,9,24,000000,19,9,21
5,2,08.04.2008,-1,-20080401,000000,8,24,000000,19,9,21
5,2,09.04.2008,-1,-20080401,000000,7,24,000000,19,9,21
5,2,10.04.2008,-1,-20080401,000000,6,24,000000,19,9,21
5,2,12.04.2008,-1,-20080401,000000,5,24,000000,19,9,21
5,2,13.04.2008,-1,-20080401,000000,4,24,000000,19,9,21
5,2,14.04.2008,-1,-20080401,000000,3,24,000000,19,9,21
5,1,17.04.2008,5,5,000000,8,24,000000,2,7,21
5,2,19.04.2008,-1,-20080401,000000,7,24,000000,19,9,21
5,2,21.04.2008,-1,-20080401,000000,6,24,000000,19,9,21
5,2,22.04.2008,-1,-20080401,000000,5,24,000000,19,9,21
5,2,23.04.2008,-2,-20080417,000000,3,48,000000,19,9,21
5,2,24.04.2008,-2,-20080417,000000,1,48,000000,19,9,21
5,1,25.04.2008,10,10,000000,11,24,000000,2,7,21
5,2,26.04.2008,-2,-20080417,000000,9,48,000000,19,9,21
5,2,27.04.2008,-2,-20080417,000000,7,48,000000,19,9,21
5,2,28.04.2008,-1,-20080417,000000,6,24,000000,19,9,21
5,2,29.04.2008,-1,-20080417,000000,5,24,000000,19,9,21
5,2,30.04.2008,-1,-20080417,000000,4,24,000000,19,9,21
5,2,01.05.2008,-1,-20080417,000000,3,24,000000,19,6,21
5,2,01.05.2008,-1,-20080417,000000,2,24,000000,19,9,21
5,2,02.05.2008,-1,-20080417,000000,1,24,000000,19,9,21
5,1,03.05.2008,15,15,000000,16,24,000000,2,7,21
5,2,03.05.2008,-1,-20080417,000000,15,24,000000,19,9,21
5,2,04.05.2008,-1,-20080503,000000,14,24,000000,19,9,21
5,2,05.05.2008,-1,-20080503,000000,13,24,000000,19,9,21
5,2,06.05.2008,-1,-20080503,000000,12,24,000000,19,9,21
5,2,07.05.2008,-1,-20080503,000000,11,24,000000,19,9,21
5,2,08.05.2008,-1,-20080503,000000,10,24,000000,19,9,21
5,2,09.05.2008,-1,-20080503,000000,9,24,000000,19,9,21
5,2,09.05.2008,-1,-20080503,000000,8,24,000000,19,6,21
5,2,11.05.2008,-1,-20080503,000000,7,24,000000,19,9,21
5,1,12.05.2008,10,10,000000,17,24,000000,2,7,21
5,2,12.05.2008,-1,-20080503,000000,16,24,000000,19,9,21
5,2,13.05.2008,-1,-20080503,000000,15,24,000000,19,9,21
5,2,14.05.2008,-1,-20080503,000000,14,24,000000,19,9,21
5,2,14.05.2008,-1,-20080503,000000,13,24,000000,19,6,21
5,2,15.05.2008,-1,-20080503,000000,12,24,000000,19,9,21
5,2,17.05.2008,-2,-20080503,000000,10,48,000000,19,9,21
5,2,17.05.2008,-2,-20080512,000000,8,48,000000,19,6,21
5,2,18.05.2008,-2,-20080512,000000,6,48,000000,19,9,21
5,1,20.05.2008,15,15,000000,21,24,000000,2,7,21
5,2,21.05.2008,-2,-20080512,000000,19,48,000000,19,9,21
5,2,21.05.2008,-1,-20080512,000000,18,24,000000,19,6,21
5,2,22.05.2008,-2,-20080512,000000,16,48,000000,19,9,21
5,2,23.05.2008,-1,-20080512,000000,15,24,000000,19,6,21
5,2,23.05.2008,-2,-20080512,000000,13,48,000000,19,9,21
5,2,24.05.2008,-2,-20080512,000000,11,48,000000,19,9,21
5,1,26.05.2008,5,5,000000,16,24,000000,2,7,21
5,2,26.05.2008,-2,-20080512,000000,14,48,000000,19,9,21
5,2,27.05.2008,-3,-20080512,000000,11,72,000000,19,9,21
5,2,27.05.2008,-1,-20080512,000000,10,24,000000,19,6,21
5,2,28.05.2008,-3,-20080512,000000,7,72,000000,19,9,21
5,2,29.05.2008,-3,-20080520,000000,4,72,000000,19,9,21
5,2,29.05.2008,-1,-20080520,000000,3,24,000000,19,6,21
5,2,30.05.2008,-1,-20080520,000000,2,24,000000,19,9,21
5,2,30.05.2008,-1,-20080520,000000,1,24,000000,19,6,21
5,2,31.05.2008,-1,-20080520,000000,0,24,000000,19,9,21
5,1,02.06.2008,15,15,000000,15,24,000000,2,7,21
5,2,02.06.2008,-2,-20080602,000000,13,48,000000,19,9,21
5,2,03.06.2008,-1,-20080602,000000,12,24,000000,19,9,21
5,2,04.06.2008,-1,-20080602,000000,11,24,000000,19,6,21
5,2,04.06.2008,-1,-20080602,000000,10,24,000000,19,9,21
5,2,05.06.2008,-1,-20080602,000000,9,24,000000,19,9,21
5,2,06.06.2008,-1,-20080602,000000,8,24,000000,19,9,21
5,2,07.06.2008,-2,-20080602,000000,6,48,000000,19,9,21
5,2,08.06.2008,-2,-20080602,000000,4,48,000000,19,9,21
5,1,09.06.2008,20,20,000000,24,24,000000,2,7,21
5,2,09.06.2008,-1,-20080602,000000,23,24,000000,19,9,21
5,2,10.06.2008,-1,-20080602,000000,22,24,000000,19,6,21
5,2,10.06.2008,-2,-20080602,000000,20,48,000000,19,9,21
5,2,11.06.2008,-1,-20080609,000000,19,24,000000,19,9,21
5,2,12.06.2008,-2,-20080609,000000,17,48,000000,19,9,21
5,2,13.06.2008,-1,-20080609,000000,16,24,000000,19,6,21
5,2,13.06.2008,-2,-20080609,000000,14,48,000000,19,9,21
5,2,14.06.2008,-1,-20080609,000000,13,24,000000,19,6,21
5,2,14.06.2008,-2,-20080609,000000,11,48,000000,19,9,21
5,2,15.06.2008,-2,-20080609,000000,9,48,000000,19,9,21
5,2,16.06.2008,-2,-20080609,000000,7,48,000000,19,9,21
5,2,16.06.2008,-1,-20080609,000000,6,24,000000,19,6,21
5,2,17.06.2008,-2,-20080609,000000,4,48,000000,19,9,21
5,1,18.06.2008,20,20,000000,24,28,000000,2,7,21
5,2,18.06.2008,-2,-20080609,000000,22,48,000000,19,9,21
5,2,19.06.2008,-2,-20080609,000000,20,48,000000,19,9,21
5,2,23.06.2008,-2,-20080618,000000,18,56,000000,19,9,21
5,2,23.06.2008,-1,-20080618,000000,17,28,000000,19,6,21
5,2,24.06.2008,-1,-20080618,000000,16,28,000000,19,9,21
5,2,25.06.2008,-1,-20080618,000000,15,28,000000,19,9,21
5,2,26.06.2008,-1,-20080618,000000,14,28,000000,19,9,21
5,2,28.06.2008,-1,-20080618,000000,13,28,000000,19,9,21
5,2,28.06.2008,-1,-20080618,000000,12,28,000000,19,6,21
5,2,29.06.2008,-2,-20080618,000000,10,56,000000,19,9,21
5,2,30.06.2008,-1,-20080618,000000,9,28,000000,19,9,21
5,1,01.07.2008,15,15,000000,24,28,000000,2,7,21
5,2,01.07.2008,-2,-20080618,000000,22,56,000000,19,9,21
5,2,01.07.2008,-2,-20080618,000000,20,56,000000,19,6,21
5,2,02.07.2008,-2,-20080618,000000,18,56,000000,19,9,21
5,2,03.07.2008,-2,-20080618,000000,16,56,000000,19,9,21
5,2,03.07.2008,-1,-20080618,000000,15,28,000000,19,6,21
5,2,04.07.2008,-2,-20080701,000000,13,56,000000,19,9,21
5,2,05.07.2008,-1,-20080701,000000,12,28,000000,19,9,21
5,2,06.07.2008,-1,-20080701,000000,11,28,000000,19,9,21
5,2,07.07.2008,-1,-20080701,000000,10,28,000000,19,6,21
5,2,07.07.2008,-1,-20080701,000000,9,28,000000,19,9,21
5,2,08.07.2008,-1,-20080701,000000,8,28,000000,19,9,21
5,2,09.07.2008,-1,-20080701,000000,7,28,000000,19,9,21
5,2,09.07.2008,-1,-20080701,000000,6,28,000000,19,8,21
5,2,10.07.2008,-1,-20080701,000000,5,28,000000,19,9,21
5,2,13.07.2008,-1,-20080701,000000,4,28,000000,19,9,21
5,2,14.07.2008,-1,-20080701,000000,3,28,000000,19,9,21
5,2,15.07.2008,-2,-20080701,000000,1,56,000000,19,9,21
5,2,15.07.2008,-1,-20080701,000000,0,28,000000,19,6,21
5,1,13.08.2008,5,5,000000,5,24,000000,2,7,21
5,2,13.08.2008,-1,-20080813,000000,4,24,000000,19,9,21
5,2,14.08.2008,-1,-20080813,000000,3,24,000000,19,9,21
5,2,15.08.2008,-1,-20080813,000000,2,24,000000,19,9,21
5,2,15.08.2008,-1,-20080813,000000,1,24,000000,19,6,21
5,2,16.08.2008,-1,-20080813,000000,0,24,000000,19,9,21

ENDTEXT

STRTOFILE(m.lcData,m.lcTemp)

create CURSOR CURSTEM ;
( ;
  STOKOD I(4,0)  NOT  NULL  ;
  ,GIR1ÇIK2 I(4,0)  NOT  NULL  ;
  ,TARIH D(8,0)  NULL  ;
  ,MIKTAR I(4,0)  NULL  ;
  ,KULLAN N(20,6)  NULL  ;
  ,DEVIR I(4,0)  NULL  ;
  ,BIRIM_TL N(20,6)  NULL  ;
  ,GENEL M(4,0)  NULL  ;
  ,ALAN_MUHID I(4,0)  NOT  NULL  ;
  ,SAT_KULID I(4,0)  NOT  NULL  ;
  ,IŞLEMNOT M(4,0)  NULL  ;
  ,BIZID I(4,0)  NULL  ;
  )

APPEND FROM (m.lcTemp) TYPE delimited
ERASE (m.lcTemp)
endproc

VFP9 SP2

14

Re: SQL server'daki IDENTITY

Senin scan ... endscan li kodu verir misin. Ne istedigini anlayamadim temel olarak:)
Asagidaki kod benim icin (eve tasimakla ugrasmayayim diye)

SQL
TEXT TO lcSQLServer noshow

CREATE TABLE testCURSTEM
(
  STOKOD int  NOT  NULL
  ,GIR1cIK2 int  NOT  NULL
  ,TARIH datetime  NULL
  ,MIKTAR int  NULL
  ,KULLAN decimal  NULL
  ,DEVIR int  NULL
  ,BIRIM_TL decimal  NULL
  ,ALAN_MUHID int  NOT  NULL
  ,SAT_KULID int  NOT  NULL
  ,BIZID int  NULL
)
ENDTEXT
 
TEXT TO lcInsert noshow
INSERT INTO testCurstem
    (STOKOD,GIR1cIK2,TARIH,MIKTAR,KULLAN,
    DEVIR,BIRIM_TL,ALAN_MUHID,SAT_KULID,BIZID)
VALUES
      (?m.STOKOD,?m.GIR1cIK2,?m.TARIH,?m.MIKTAR,?m.KULLAN,
      ?m.DEVIR,?m.BIRIM_TL,?m.ALAN_MUHID,?m.SAT_KULID,?m.BIZID)
ENDTEXT
 
lnHandle = Sqlstringconnect('Driver={SQL Native Client};server=.\sqlexpress;'+;
    'trusted_connection=yes;Database=test')
 
SQLEXEC(m.lnHandle,m.lcSQLServer)
 
SELECT curstem
SCAN
SCATTER memvar
SQLEXEC(m.lnHandle,m.lcInsert)
ENDSCAN
 
SQLDISCONNECT(0)

15 Son düzenleyen, konuka (15.02.2009 08:21:17)

Re: SQL server'daki IDENTITY

kodu aşağıya aynen yazdım - işaretli bölüm önceki reçete ile halledilmişti .
teşekkürler ...

Visual Fox Pro
# DEFI STOKOD_ESIT_LISTSOKVALUE stokişlem.stokod=VAL(ThisForm.liSTSTOK.Value)

LOCAL M.Xrecno,M.Xtarih,M.Xdevir,M.XilKullanim
 
SELECT stokişlem
SET ORDER TO stokod &&STR(stokod)+DTOS(tarih)+gir1çik2
M.Xrecno=RECNO()    && işlemin başlayacağı kayıt
 
SEEK STR(VAL(ThisForm.liSTSTOK.Value))+DTOS(DATE(YEAR(This.txtarih.Value),1,1))+"0"
*REPLACE stokişlem.devir WITH 0
M.Xdevir=stokişlem.devir
M.Xbaşlarecno=RECNO()
************************----------------------bu bölüm halledildi
SCAN WHIL STOKOD_ESIT_LISTSOKVALUE
  DO CASE
  CASE stokişlem.gir1çik2="1"
    REPLACE stokişlem.devir WITH M.Xdevir+stokişlem.miktar
  CASE stokişlem.gir1çik2="2"
    REPLACE stokişlem.devir WITH M.Xdevir-stokişlem.miktar
  CASE stokişlem.gir1çik2="0"
    REPLACE stokişlem.devir WITH M.Xdevir
  ENDCASE 
  REPLACE kullan WITH 0  && kullanım sıfırlanıp yeniden hesaplanacak
  M.Xdevir= stokişlem.devir
ENDSCAN
******************---------------------------------buraya kadar
GO M.Xbaşlarecno
M.Xtarih=stokişlem.tarih
 
M.XilKullanim=0
SCAN WHILE STOKOD_ESIT_LISTSOKVALUE
  IF gir1çik2="2"    && çıkış ise stoktan kayıtlarını alıyor
    M.Xbedelkullanim=0
    M.Xtarih=stokişlem.tarih
    M.Xgit=RECNO()
    M.Xkullanim=stokişlem.miktar
 
    SELECT miktar-kullan,RECNO(),birim_TL,tarih FROM stokişlem ;
    WHERE miktar-kullan>0 AND gir1çik2="1" AND tarih<=M.Xtarih AND stokişlem.stokod=VAL(ThisForm.liSTSTOK.Value) ;
    ORDER BY tarih,gir1çik2 INTO ARRAY kullan && gir1çik2:: 0-devir,1-gir
 
    IF _tally>0
      M.Xi=1
      DO WHIL M.Xi<= ALEN(kullan,1) AND M.Xkullanim>0
        GO kullan[M.Xi,2] IN stokişlem
        M.XilKullanim=IIF(stokişlem.kullan=0,-VAL(DTOS(kullan[1,4])),M.XilKullanim)
        REPLACE stokişlem.kullan WITH stokişlem.kullan+MIN(kullan[M.Xi,1],M.Xkullanim)
        M.Xbedelkullanim=M.Xbedelkullanim+MIN(kullan[M.Xi,1],M.Xkullanim)*kullan[M.Xi,3]
        M.Xkullanim      = M.Xkullanim-MIN(kullan[M.Xi,1],M.Xkullanim)
        M.Xi=M.Xi+1
      ENDD
         GO M.Xgit
         REPLACE stokişlem.birim_TL WITH M.Xbedelkullanim
         REPLACE stokişlem.kullan WITH M.XilKullanim
       ENDIF
  ENDI
ENDS
 
GO M.Xrecno 
*REPLACE stok.stokta WITH M.Xdevir IN stok  && devir ile stok.stokta uyumu :
                                            && dosyaları tamir için - sonra kaldır
RETURN  &&  aşağısı kısa işlem için çalışılacak


dikkat önemli, bu kodda stokişlem.miktar hep + değer
yeni yapıda (SQL ile gelen değişiklik) örnek yolladığım data gir1çik2=2 olunca - stokişlem.miktar (çıkış) - oluyor

VFP9 SP2

16

Re: SQL server'daki IDENTITY

Bunu kaybetmistim. Noldu hala lazim mi, cok mu gec kaldik?

17

Re: SQL server'daki IDENTITY

cetinbasoz yazdı:

Bunu kaybetmistim. Noldu hala lazim mi, cok mu gec kaldik?


hiç de geç değil - son 15 gün yarı tatil yaptım - 2 gün dağda 1 gün emaneten iş - üzerinize afiyet dediklerinden smile

Hem bu lazım - hem de diğeri -  SQLEXPRESS 2008 server üstünden, benim makinede çalışan .exe  program diğer clientlerde çalışmıyor. Bugün uğraşacağım, sorularımı ilgili başlıkta yazarım ....sevgiler

VFP9 SP2

18

Re: SQL server'daki IDENTITY

Simdi ben o durumdayim, aksam bakmaya calisirim.

19

Re: SQL server'daki IDENTITY

Buna  baktim aslinda ama henuz efektif bir cozumum yok.