• DİKKAT

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

Veritabanınan alınan verilerin şartlı olarak değere uyuyorsa işletilsin uymuyorsa diğ

Katılım
14 Ocak 2005
Mesajlar
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
Selam arkadaşlar; Aşağıdaki sorgumda bir sorun oluyor bakabilirseniz sevinirim.
Kod:
Dim BASTAR As String
Dim BITTAR As String
Dim BSYIL As String
Dim BSAY As String
Dim BSGUN As String
Dim BTYIL As String
Dim BTAY As String
Dim BTGUN As String
Dim DEPARTMAN As String
Dim SQLText As String
Dim I As Integer
 
Dim RST As New ADODB.Recordset
 
Call Main
DoEvents
SQLCON.Open
 
BSYIL = Range("B3")
BSAY = Range("C3")
BSGUN = Range("D3")
BTYIL = Range("B4")
BTAY = Range("C4")
BTGUN = Range("D4")
BASTAR = BSYIL + " - " + BSAY + " - " + BSGUN
BITTAR = BTYIL + " - " + BTAY + " - " + BTGUN
DEPARTMAN = Range("C1")
 
 
SQLText = "SELECT ENV_MLZ,STKMLZ_ADI1,ENV_DEV_MIK,ENV_GIR_MIK,ENV_URT_MIK,ENV_ART_MIK,ENV_RZG_MIK, " & vbCrLf
SQLText = SQLText & " ENV_CIK_MIK,ENV_IML_MIK,ENV_EKS_MIK,ENV_HAS_MIK,ENV_IAD_MIK,ENV_SAT_MIK " & vbCrLf
SQLText = SQLText & " FROM ENV " & vbCrLf
SQLText = SQLText & " LEFT OUTER JOIN tttMLZ ON tttMLZ_KOD = ENV_MLZ " & vbCrLf
SQLText = SQLText & " WHERE ENV_CPFACD = '" + DEPARTMAN + "' AND " & vbCrLf
SQLText = SQLText & " ENV_TAR = '" + BITTAR + "' " & vbCrLf
 
 
Set RST.DataSource = SQLCON.Execute(SQLText)
'Range("A8:O65000").Select
'Selection.ClearContents
Do Until RST.EOF
For I = 1 To RST.RecordCount Step 1
deger = RST.Fields(0).Value
If Cells(I + 7, 1).Value = deger Then
 
'Cells(I + 7, 1) = RST.Fields(0)    ' _MLZ
'Cells(I + 7, 2) = RST.Fields(1)    ' _TTTMLZ_ADI1 LEFT OUTER JOIN
Cells(I + 7, 3) = RST.Fields(2)    ' _DEV_MIK
Cells(I + 7, 4) = RST.Fields(3) + RST.Fields(4) + RST.Fields(5) + RST.Fields(6) ' _GIR_MIK + _URT_MIK + _ART_MIK + _RZG_MIK
Cells(I + 7, 5) = RST.Fields(7) + RST.Fields(8) + RST.Fields(9) + RST.Fields(10) + RST.Fields(11) + RST.Fields(12) ' _CIK_MIK + _IML_MIK + _EKS_MIK + _HAS_MIK + _IAD_MIK + _SAT_MIK
Cells(I + 7, 6) = (RST.Fields(2) + RST.Fields(3) + RST.Fields(4) + RST.Fields(5) + RST.Fields(6)) - (RST.Fields(7) + RST.Fields(8) + RST.Fields(9) + RST.Fields(10) + RST.Fields(11) + RST.Fields(12))
 
 
Label1.Caption = "% " & Round(I / RST.RecordCount * 100, 0)
 
 
RST.MoveNext
End If
 
Next I
 
Loop
 
 
RST.Close
 
 
SQLCON.Close
Range("B7").Select


YUKARIDAKİ kodlarımla veritabanımdan çağırmış olduğum bililerimi excelde Cells(I + 7, 1).Value burdaki sabit değerimle eşitse karşısına
Kod:
Cells(I + 7, 3) = RST.Fields(2)    ' _DEV_MIK
Cells(I + 7, 4) = RST.Fields(3) + RST.Fields(4) + RST.Fields(5) + RST.Fields(6) ' _GIR_MIK + _URT_MIK + _ART_MIK + _RZG_MIK
Cells(I + 7, 5) = RST.Fields(7) + RST.Fields(8) + RST.Fields(9) + RST.Fields(10) + RST.Fields(11) + RST.Fields(12) ' _CIK_MIK + _IML_MIK + _EKS_MIK + _HAS_MIK + _IAD_MIK + _SAT_MIK
Cells(I + 7, 6) = (RST.Fields(2) + RST.Fields(3) + RST.Fields(4) + RST.Fields(5) + RST.Fields(6)) - (RST.Fields(7) + RST.Fields(8) + RST.Fields(9) + RST.Fields(10) + RST.Fields(11) + RST.Fields(12))

bunları yazsın yani bu satırları işletsin
sonra diğer satıra baksın buşekilde bir şartlı döngü kurmak istedim ama yapamıyorum nasıl yapabilirim. bu if li döngüyü.
 
Arkadaşlar yokmu bir bilen lütfen anlaşılmayan bir yeri varsa detaylı açıklayabilrim.
 
- Aynı işi yapan iç içe dögü kurmuşsunuz, birini iptal edin.

- rst.movenext satırını if-end if bloğunun dışına alın.

Muhtemelen sorununuz çözülecek...
 
Sayın hocam dediğiniz gibide daha öncede denemiştim yine denedim bu sefer de mesala ilk üç a sutunundaki kod uyuyor onların verileri geliyor sonra 4. satırdaki veri uymuyor orda döngüyüsonlandırıyor programdan çıkıyor.
Asıl yapmak istediğim şudur. Bir örnek dosyada ekliyorum ilgilenebilirseniz sevinirim. Detaylı açıklama dosyada mevcuttur.

BURDA YAPMAK İSTEDİĞİM SORGU İLE ÇAĞIRIP RST. DE SIRA İLE ALMIŞ OLDUĞUM BU TAPLODA A SUTUNUNDAKİ KODLARI DİKKATE ALARAK DÖNGÜ İÇİNDE EĞER A DAKİ DEĞERLE EŞLEŞİŞYORSAU C D E F SUTUNLARININ VERİLERİNİ YENİDEN YAZ FAKAT DEĞİLSE BİR SONRAKİ VERİ KARŞILAŞTIR. BU SON A SUTUNUNDAKİ VERİLER KONTROL EDİLİP KARŞILARINA DEĞERLİ YAZILANA KADAR EN HIZLI ŞEKİLDE NASIL YAPABİİRİM.

YANİ KISACA SQL DEN ALDIĞIM BİR TABLODAKİ VERİLERİ EXCEL SAYFAMDAKİ VERİLERLE KARŞILAŞTIRIYORUM UYUYORSA ALIYORUM BU BİTİNCEYE KADAR DEVAM EDİYOR UYMUYORSA BİR SONRAKİ SATIRA GEÇİYOR.
 

Ekli dosyalar

www.excelce.net/forum dan Sayın Evren Gizlen in yardımları ile aşağıdaki şekilde sorunumu hallettim
belki birilerinin daha işine yarar diye kaynak gösterek burayda eklemek istedim. Umarım birilerin işini halledebilir. Sonuçta bilgiler paylaşıldıkça çoğalırlar.
www.excelce.net/forum/index.php?topic=356.0

Kod:
Private Sub CommandButton1_Click()
'verileri koda göre güncelle.
Set z = CreateObject("Scripting.dictionary")
For a = 8 To Sheets("BAR_06-10-2").Cells(65536, "A").End(xlUp).Row
    If Not z.exists(Sheets("BAR_06-10-2").Cells(a, "A").Value) Then
        z.Add CStr(Sheets("BAR_06-10-2").Cells(a, "A").Value), a
    End If
Next a
    
Dim BASTAR As String
Dim BITTAR As String
Dim BSYIL As String
Dim BSAY As String
Dim BSGUN As String
Dim BTYIL As String
Dim BTAY As String
Dim BTGUN As String
Dim DEPARTMAN As String
Dim SQLText As String
Dim I As Integer

Dim RST As New ADODB.Recordset

Call Main
DoEvents
SQLCON.Open

BSYIL = Range("B3")
BSAY = Range("C3")
BSGUN = Range("D3")
BTYIL = Range("B4")
BTAY = Range("C4")
BTGUN = Range("D4")
BASTAR = BSYIL + " - " + BSAY + " - " + BSGUN
BITTAR = BTYIL + " - " + BTAY + " - " + BTGUN
DEPARTMAN = Range("C1")
 

SQLText = "SELECT ENVANTER_MLZ,STKMLZ_ADI1,ENVANTER_DEV_MIK,ENVANTER_GIR_MIK,ENVANTER_URT_MIK,ENVANTER_ART_MIK,ENVANTER_RZG_MIK, " & vbCrLf
SQLText = SQLText & " ENVANTER_CIK_MIK,ENVANTER_IML_MIK,ENVANTER_EKS_MIK,ENVANTER_HAS_MIK,ENVANTER_IAD_MIK,ENVANTER_SAT_MIK " & vbCrLf
SQLText = SQLText & " FROM ENVANTER " & vbCrLf
SQLText = SQLText & " LEFT OUTER JOIN STKMLZ ON STKMLZ_KOD = ENVANTER_MLZ " & vbCrLf
SQLText = SQLText & " WHERE ENVANTER_CPFACD = '" + DEPARTMAN + "' AND " & vbCrLf
SQLText = SQLText & " ENVANTER_TAR = '" + BITTAR + "' " & vbCrLf

Set RST.DataSource = SQLCON.Execute(SQLText)

Dim deger As String

Do Until RST.EOF
For I = 1 To RST.RecordCount Step 1
deger = CStr(RST.Fields(0).Value)
If z.exists(deger) Then
    Sheets("BAR_06-10-2").Cells(z.Item(deger), 3) = RST.Fields(2)
    Sheets("BAR_06-10-2").Cells(z.Item(deger), 4) = RST.Fields(3) + RST.Fields(4) + RST.Fields(5) + RST.Fields(6) ' _GIR_MIK + _URT_MIK + _ART_MIK + _RZG_MIK
    Sheets("BAR_06-10-2").Cells(z.Item(deger), 5) = RST.Fields(7) + RST.Fields(8) + RST.Fields(9) + RST.Fields(10) + RST.Fields(11) + RST.Fields(12) ' _CIK_MIK + _IML_MIK + _EKS_MIK + _HAS_MIK + _IAD_MIK + _SAT_MIK
    Sheets("BAR_06-10-2").Cells(z.Item(deger), 6) = (RST.Fields(2) + RST.Fields(3) + RST.Fields(4) + RST.Fields(5) + RST.Fields(6)) - (RST.Fields(7) + RST.Fields(8) + RST.Fields(9) + RST.Fields(10) + RST.Fields(11) + RST.Fields(12))
    
  
    
End If
  Label1.Caption = "% " & Round(I / RST.RecordCount * 100, 0)
RST.MoveNext
Next I

Loop

RST.Close

SQLCON.Close
Range("B7").Select

End Sub
www.excelce.net/forum/index.php?topic=356.0
 
Şimdi düzeltme yapayım hemen.Evet ben o sitede yöneticiyim ama bu sitede uzmanım.Bu sitede binlerce soruya yanıt verdim.Ve vermeyede devam ediyorum.Arkadaşların aklına başka bir şey gelmesin.Gözümden kaçmış sanırım.Yoksa buradada katkım olurdu.
Kolay gelsin.
 
İstemiyerek polemik yaratmak istemezdim. Ben sadece paylaşılsın istemiştim.
 
İstemiyerek polemik yaratmak istemezdim. Ben sadece paylaşılsın istemiştim.
Yanlış anlamayın lütfen.Ben sizin için söylemedim.
Genel olarak konuştum.
İyi çalışmalar.
 
Geri
Üst