• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

sql veri tabanındaki en son girilen veri

Katılım
28 Eylül 2006
Mesajlar
323
Excel Vers. ve Dili
türkçe 2010
merhaba
excelden sql veri girişi yapıyorum.

ama en son girdiğim veri nasıl getire bilirim
yani id en büyük veri nasıl gelir.


server:192.168.8.6,1433
kullanıcı adı:gokhan
şifre:01453
veri tabanı:termikelsefaatli
tablo adı: performans
 
son girilen 100 kayıt ( "ID" sutunu PRIMARY KEY olmalı.)
Kod:
SET ROWCOUNT 100
SELECT  * 
FROM performans  ORDER BY ID DESC


bu kod ilede en büyük ID li kaydı önünüze getirir.
Kod:
select *
from performans
WHERE ID = SELECT  MAX(ID)   FROM performans   GORUP BY ID


tabloya atılan son 10 kayıt
Kod:
select TOP 10  *
from performans
order ID DESC


tabloya atılan son kayıt
Kod:
select last(ID) from performans

istediğiniz böyle birşey mi?
 
Son düzenleme:
Eğer Veritabanınıza aynı anda birden çok kullanıcı veri giriyorsa ve veri giriş anları çakışmışsa son girilen veri sizin Excel ile eklediğiniz veri olmayabilir. Çünkü siz veri girerken, başkasıda veri girer ve son kayıt o kişinin verisi olur bu durumlarda insert yapıldıktan sonra ScopeIdedntity kullanmaktır.
Örnek

Insert Into Categories (CategoryName) Values('Deneme');
Select SCOPE_IDENTITY()
 
tam olarak

sayfa1 a1 hücresinden yazman için ne yapmam gerekli

select *
from performans
WHERE ID = SELECT MAX(ID) FROM performans GORUP BY ID

konuya tam hakim değilim
 
İstediniz şey
database e baglanarak sorgu çalıştırmak , cevaptaki işinize yarayacak veriyi , vba ile excel de hüçreye yazmak.

Keşke yazıldığı kadar kolay olsaydı. Yıllar önce çok kafa yordum. Ve o zaman çözdüğüm gibi devam ediyorum.

Önce database baglanmak için baglantı kodu.
( Kodların calışması için . References ' ten "Microsoft ActiveX Data Objects 2,5 Library" referans edilmeli. )

Sonra sorguyu çalıştır suruyu sor.

Cevaptaki istediğin veriyi hüçreye oku.

Kod:
'baglanti için gerekli olanlar.
bag_IP_net =  "SERVER IP'si"
bag_db =  "Databese"
bag_user = "SQL_Kullanıcısi" 
bag_sss =  "Parolası"

'baglantı sorgusunu oluşuturalım.
bag = ""
bag = bag & "PROVIDER=SQLOLEDB"
bag = bag & ";DATA SOURCE=" & bag_IP_net
bag = bag & ";INITIAL CATALOG=" & bag_db
bag = bag & ";User Id=" & bag_user
bag = bag & ";Password=" & bag_sss


'ado ile baglanıp sorumuzu soralım. 

Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
strConn = bag
cnt.ConnectionString = strConn


sorgu = ""
sorgu = sorgu & "select ID "
sorgu = sorgu & "from performans "
sorgu = sorgu & "WHERE ID = (SELECT MAX(ID) FROM performans GORUP BY ID) "

cnt.Open
rst.Open sorgu, cnt, 1, 1
'soruyu sorduk cevap "rst" nin içinde.

'record setimizin içinde ID sutundaki veriyi alalım. 
SonNo = rst!ID

'hüçreye cağıralım. 
Range("A1") = SonNo

Set rst = Nothing
Set cnt = Nothing
Application.UseSystemSeparators = True

Kodları elimden geldiği kadar okunaklı yazdım.

@Prostar arkadaşın dediği gibi databese 'e yogun bir veri girişi var sa.
Son noyu almanda sıkıntı ceke bilirsin. Bunuda ayrı bir şekilde geliştirip değerlendirmen gerekiyor.

Anlık oalrak A1 hüçresinde son girilen veri ID sının yazmasını istiyorsanız bu kodun devamlı calışması için bir kod yazılması gerekiyor.

Kolay gelsin.
 
Geri
Üst