• DİKKAT

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

For Next

Katılım
2 Ağustos 2017
Mesajlar
14
Excel Vers. ve Dili
2007
Merhabalar,
bir tane for döngüsü kurmaya calışıyorum excel deki bir alanı sql deki tanımlamış olduğum alana aktarmak için.

v1 atadığım değişken oluyor.-ki onuda string bağlantımda v1 olarak çağırıp kullanıyorum.Ama nedense v1 bir türlü değerleri ile gelmiyor.Acaba neyi kaçırıyor olabilir.

Aslında 'Sheet1.Cells(i, 5) = Sheet1.Cells(i, 1) ile A daki değerli E ye aktarıyor ise i5 yerine v1 yazdığımda sql e aktarması gerekmezmi?

For i = 1 To 10
V1 = Sheet1.Cells(i, 1)
Next i
 
Merhabalar,
bir tane for döngüsü kurmaya calışıyorum excel deki bir alanı sql deki tanımlamış olduğum alana aktarmak için.

v1 atadığım değişken oluyor.-ki onuda string bağlantımda v1 olarak çağırıp kullanıyorum.Ama nedense v1 bir türlü değerleri ile gelmiyor.Acaba neyi kaçırıyor olabilir.

Aslında 'Sheet1.Cells(i, 5) = Sheet1.Cells(i, 1) ile A daki değerli E ye aktarıyor ise i5 yerine v1 yazdığımda sql e aktarması gerekmezmi?

For i = 1 To 10
V1 = Sheet1.Cells(i, 1)
Next i

Bu kod bölümü ve açıklamalar yeterli değil.

SQL aktarım cümlesini ve biraz daha yardımcı olacak bilgi ekler misiniz?
 
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset

Dim strConn As String, stsql As String, V1 As String, v2 As String

tablename = "**"
server_ismi = "**"
veritabanı_ismi = "**"
User = "**"
Password = "**"

For i = 1 To 10
Sheet1.Cells(i, 5) = Sheet1.Cells(i, 1)
V1 = Sheet1.Cells(i, 1)

Next i

Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset

strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=" & server_ismi & ";INITIAL CATALOG=" & veritabanı_ismi & ";"
strConn = strConn & "UID=" & User & ";PWD=" & Password

cnt.ConnectionString = strConn

stsql = "insert into " & tablename & " (alan1) Values ('" & V1 & "')"


cnt.Open
rst.Open stsql, cnt
 
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset

Dim strConn As String, stsql As String, V1 As String, v2 As String

tablename = "**"
server_ismi = "**"
veritabanı_ismi = "**"
User = "**"
Password = "**"

For i = 1 To 10
Sheet1.Cells(i, 5) = Sheet1.Cells(i, 1)
V1 = Sheet1.Cells(i, 1)

Next i

Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset

strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=" & server_ismi & ";INITIAL CATALOG=" & veritabanı_ismi & ";"
strConn = strConn & "UID=" & User & ";PWD=" & Password

cnt.ConnectionString = strConn

stsql = "insert into " & tablename & " (alan1) Values ('" & V1 & "')"


cnt.Open
rst.Open stsql, cnt

Buradaki kodun amacı nedir?
V1 e sürekli değişik değerler atıyor ve en son cells(10,1) deki değeri veriyor.

Kod:
For i = 1 To 10
Sheet1.Cells(i, 5) = Sheet1.Cells(i, 1)
V1 = Sheet1.Cells(i, 1)

Next i

Buradaki kod ise V1 in en son aldığı değeri yazıyor.

Siz ne yapmak istiyorsunuz.

Kod:
stsql = "insert into " & tablename & " (alan1) Values ('" & V1 & "')"
 
Şöyleki;
'stsql = "insert into " & tablename & " (alan1) Values ('" & V1 & "')"
bu kod ile seçili alandaki değeri yazdırmasını amaçlıyordum.Ama sadece tek değer yazdırdığı için for next kullanmaya çalıştım.ki olmadı örnektede görüldüğü üzere.

Amacım excelde "A" alanındaki değerleri sqldeki "alan1"'e yazdırmak.
 
Bu kodu inceleyiniz.
İnsert işlemini döngünün içine almanız gerekiyor.
V1 her yeni değer aldığında insert işlemi de döngünün içinde insert işlemini yapması gerekiyor.

Kod:
Private CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim Field As ADODB.Field

Dim SQL As String
Dim Connected, hata As Boolean
Dim i, j, satis As Long
Dim yil, ay As Integer
Dim veri As String
Dim serverip, db, kullanici, sifre As String


Sub menu()
  serverip = "127.0.0.1"
  db = "TESTDB"
  kullanici = "sa"
  sifre = "123"
  hata = False
  
  Call karsilastir
  
  If hata Then
     MsgBox ("Server bağlantsı sağlanamadı.")
  Else
     MsgBox ("Insert ve Update işlemleri tamamlandı.")
  End If
  
End Sub

Sub karsilastir()
 Connected = Connect(serverip, db)
 If Connected Then
    Set RS = New ADODB.Recordset
 Else
    hata = True
    Exit Sub
 End If
  
 sonsatir = Cells(Rows.Count, "A").End(3).Row

 For j = 2 To sonsatir
     yil = Cells(j, 2).Value
     ay = Cells(j, 3).Value
     satis = Cells(j, 4).Value

     If yil = "" Then Exit For
     
     veri = "T.YIL=" & yil & " AND T.AY=" & ay
     SQL = "SELECT count(*) FROM TESTDB.DBO.TBLSATIS T WHERE " & veri
     Set RS = CN.Execute(SQL)
     
     If RS.Fields(0).Value <= 0 Then
      [COLOR=Red]  veri = yil & "," & ay & "," & satis
        SQL = "INSERT INTO TESTDB.DBO.TBLSATIS ([YIL],[AY],[SATIS]) VALUES(" & veri & ")"
        If RS.State = adStateOpen Then RS.Close
        RS.Open SQL, CN, adOpenStatic, adLockReadOnly, adCmdText[/COLOR]
     Else
        veri = satis & " WHERE YIL=" & yil & " AND AY=" & ay
        SQL = "UPDATE TESTDB.DBO.TBLSATIS SET SATIS=" & veri
        Set RS = CN.Execute(SQL)
     End If
 Next
 
 Set RS = Nothing
 Call Disconnect
End Sub

Function Disconnect()
    CN.Close
End Function

Function Connect(Server, database) As Boolean
 
    Set CN = New ADODB.Connection
    On Error Resume Next
 
    With CN
         .ConnectionString = "Provider=SQLOLEDB.1;" & _
                             "Persist Security Info=False;" & _
                             "Initial Catalog=" & database & ";" & _
                             "Data Source=" & Server & ";" & _
                             "User ID=" & kullanici & ";Password=" & sifre & ";"
        .Open
    End With

    If CN.State = 0 Then
        Connect = False
    Else
        Connect = True
    End If
 
End Function
 
mesajdaki örneği inceledim , insert işlemini for döngüsünün içine aldım ve sonuç başarılı :) thanks.. İlgilendiğiniz için çok mersi.
 
Geri
Üst