Dinamik olarak Sql update Excel den.

Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Kod:
If rs.RecordCount > 0 Then
Do While Not rs.EOF
[B]rs("KOD") = .Cells(i, "D").Value
[/B]rs.Update

Yapmak istediğim

'rs("KOD") = .Cells(i, "D").Value
rs("6. Satır , Sutun Değeri F3 Deki Yazılı Hücredeki veriyi buraya almak") = .Cells(i, "Sutun Değeri F3 Deki Yazılı Hücredeki veriyi buraya almak").Value

Yukarıdaki kodlarımda ilk kodda statik olan verilerimi ben excele de hücreye değer yazarak yapmak istediğim işlemimi sorguda da dinamik hale getirmek istiyorum. Yani 6.satır, ve f3 yazdığım D sutunda alacağı değer bu sutun ve satıra denk gelen KOD Değeri ni alıcak. Farklı bir şey yazarsam Atıyorum. f3 e G yazdım o zaman orada ki değer olan TUR değerini ayazcak ve updatimi TUR nındaki veride yapıcak.

saygılarımla.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
"F3" hücresine "G" yazıp "F3" e nasıl "TUR" değeri getiriyorsunuz?
 
Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Sevgili Zeki bey İlginiz için çok teşekkür ederim. Kusura bakmayın biraz gec gördüm yazdığınızı.
F3 hücresine farz edin ki G yazdım ben excel sayfamda da 6. satırda sira ile
Sql deki alanlarım yazılı 10 tane alanım var ve verilerim altında mevcut satır satır.
Ben burda her seferinde sql kodunda gidip G stunundaki verileri düzeltip update etmemek adına düşündümki F3 hücresine Bir G yazayım Zaten rs("buraya f3 de G yazıyorum ya 6.satır sabit zaten Sadece sutun değiken o bakımdan 6 satır değişken sutundaki denk gelen değeri alıp bu rs değeri yerine kullanırsam. Yani Sql deki alan adı değeri yazılı zaten orda onu almak amaç ") = .Cells(i, "Sutun Değeri F3 Deki Yazılı Hücredeki veriyi buraya almak").Value
sonra bildiğiniz gibi yukarda i döngüsü var i satırı F3 e G yazdık faz edelim .cell(i,"G").value değeri ile güncelleyecek verileri sql de bende bu alanlar sabit olarak var sql kodu elimde fakat dinamik olarak yapamadım bu şekilde.
İnşallah anlatabilmişimdir. Saygılarımla.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Düşündüğünüz yöntem biraz karışık geldi bana. Bir alan listesi hazırlayıp F3 hücresini "combobox" olarak kullnmanızı tavsiye ederim.

Ekli örneği inceleyin...
 

Ekli dosyalar

Katılım
14 Ocak 2005
Mesajlar
792
Excel Vers. ve Dili
Ofis 2010 2016
Altın Üyelik Bitiş Tarihi
13/03/2022
Aslında karaşık değil ben sanırım biraz karışık anlattım. Kusura bakmayın.
Birde örnek dosya ekliyorum.

Benim tek istediğim sabit olan 6.satır diyelim 4 üncü sutun D yani.
neresi denk olur D6 olur işte bu D6 nının değerini almak istiyorum.

SunucuIp = "XXX.XXX.X.X"
SunucuAdi = "XXXXSERVER"
VeritabaniAdi = "XXXXDATA"
KullaniciAdi = "XXXX"
Sifre = "XXXXXXXXXXXXX"
Set SQLCON3 = CreateObject("adodb.connection")
' bağlantı stringi
SQLCON3.ConnectionString = "PROVIDER=SQLOLEDB.1;SERVER=" & SunucuIp & ";user id=" & KullaniciAdi & ";PWD=" & Sifre & ";DATABASE=" & SunucuAdi & ";Initial Catalog=" & VeritabaniAdi & ""
SQLCON3.Open

Set sayfa = Sheets("" & CStr(ActiveSheet.Name) & "")
With sayfa
For i = 7 To .Range("a65536").End(3).Row
Sql1 = "SELECT * FROM MALZEME WHERE MALZEME_KOD='" & CStr(.Cells(i, "B").Value) & "'"
Set rs = CreateObject("adodb.recordset")
rs.Open Sql1, SQLCON3, 1, 3
If rs.RecordCount > 0 Then
Do While Not rs.EOF
rs("MALZEME_URTIM_KOD") = .Cells(i, "D").Value
rs.Update
rs.MoveNext
Loop
End If

Next i
End With
SQLCON3.Close
Set SQLCON3 = Nothing
Set sayfa = Nothing
i = Empty: Sql1 = vbNullString
End Sub
rs("MALZEME_URTIM_KOD") = .Cells(i, "D").Value
Benim Tek istediğim Aslında
1- şu MALZEME_URETIM_KOD yazan yeri excel hücreden aldırmak.
2- bide .Cells8i,"D").Value yazıyor ya ordaki D yi aldırmak
Çünkü her seferinde bazen MALZEME_KDV olan bir alanda bir update gerekiyor
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,344
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Sorunuz şimdi anlaşıldı.

Kod:
rs(CStr(Range(CStr([F3] & 6)))) = .Cells(i, CStr([F3])).Value
 
Üst