Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > Diğer Yazılımlar > SQL
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

SQL Yapısal sorgulama dili hakkında sorularınızı buraya sorabilirsiniz.

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 31-03-2009, 14:33   #1
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan SQL kodunu VBA koduna çevirmek

Şu SQL kodunu VBA koduna çevirebilirmisiniz ?

SELECT SUM(LG_086_01_KSLINES.AMOUNT) AS Giren
FROM LG_086_KSCARD INNER JOIN
LG_086_01_KSLINES ON LG_086_KSCARD.LOGICALREF = LG_086_01_KSLINES.CARDREF
WHERE (LG_086_01_KSLINES.DATE_ BETWEEN CONVERT(DATETIME, '2009-03-30 00:00:00', 102) AND CONVERT(DATETIME, '2009-03-30 00:00:00', 102)) AND
(LG_086_01_KSLINES.SIGN = 0) AND (LG_086_KSCARD.LOGICALREF = 1)
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 31-03-2009, 14:36   #2
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

Ben biraz uğraştım ama hata alıyorum....

086 ifadesi SETUP sayfasından çekiliyor...(Firma No)
Tarih1 ve Tarih2 aktif çalışma sayfasındaki B1 ve C1 hücresinden çekiliyor...

S = "SELECT SUM(LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.AMOUNT) AS Giren,"
S = S & "FROM LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_KSCARD INNER JOIN,"
S = S & "LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES ON LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_KSCARD.LOGICALREF = LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.CARDREF,"
S = S & "WHERE (LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.DATE_ BETWEEN CONVERT(DATETIME, '" & tarih1 & "', 102) AND CONVERT(DATETIME, '" & tarih2 & "', 102)) AND"
S = S & "(LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.SIGN = 0) AND (LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_KSCARD.LOGICALREF = 1)"
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 31-03-2009, 21:43   #3
modalı
Uzman
 
modalı kullanıcısının avatarı
 
Giriş: 25/12/2005
Şehir: İstanbul
Mesaj: 4,162
Excel Vers. ve Dili:
MS Office 2010 Pro Türkçe
Varsayılan

Aşağıdaki kodları deneyebilir misiniz?

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Dim strSQl As String
  strSQL = "SELECT SUM(LG_086_01_KSLINES.AMOUNT) AS Giren" & vbNewLine
  strSQL = strSQL & "        FROM LG_086_KSCARD INNER JOINLG_086_01_KSLINES " & vbNewLine
  strSQL = strSQL & "          ON LG_086_KSCARD.LOGICALREF = LG_086_01_KSLINES.CARDREF" & vbNewLine
  strSQL = strSQL & "       WHERE (LG_086_01_KSLINES.DATE_ BETWEEN CONVERT(DATETIME" & vbNewLine
  strSQL = strSQL & "           , '2009-03-30 00:00:00'" & vbNewLine
  strSQL = strSQL & "           , 102) " & vbNewLine
  strSQL = strSQL & "         AND CONVERT(DATETIME" & vbNewLine
  strSQL = strSQL & "           , '2009-03-30 00:00:00'" & vbNewLine
  strSQL = strSQL & "           , 102)) AND(LG_086_01_KSLINES.SIGN = 0) " & vbNewLine
  strSQL = strSQL & "         AND (LG_086_KSCARD.LOGICALREF = 1)"
Alternatif olarak:

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Dim strSQLStart As String
  Dim strSQLFrom As String
  Dim strSQLWhere As String
  Dim strSQLOrder As String
  Dim strSQL as string
  strSQLStart = "SELECT SUM(LG_086_01_KSLINES.AMOUNT) AS Giren"
   strSQLFrom = " From  LG_086_KSCARD INNER JOINLG_086_01_KSLINES "
      strSQLFrom = strSQLFrom & "  ON LG_086_KSCARD.LOGICALREF = LG_086_01_KSLINES.CARDREF"
   strSQLWhere = " Where  (LG_086_01_KSLINES.DATE_ BETWEEN CONVERT(DATETIME"
      strSQLWhere = strSQLWhere & "  , '2009-03-30 00:00:00'"
      strSQLWhere = strSQLWhere & "  , 102) "
      strSQLWhere = strSQLWhere & "  AND CONVERT(DATETIME"
      strSQLWhere = strSQLWhere & "  , '2009-03-30 00:00:00'"
      strSQLWhere = strSQLWhere & "  , 102)) AND(LG_086_01_KSLINES.SIGN = 0) "
      strSQLWhere = strSQLWhere & "  AND (LG_086_KSCARD.LOGICALREF = 1)"
   strSQL = strSQLStart & strSQLFrom & strSQLWhere & strSQLOrder

İyi çalışmalar
modalı Çevrimdışı   Alıntı Yaparak Cevapla
Eski 02-04-2009, 15:10   #4
lsuersoy
 
lsuersoy kullanıcısının avatarı
 
Giriş: 29/06/2005
Şehir: İstanbul
Mesaj: 158
Excel Vers. ve Dili:
MS Office Professional Plus 2013 64 Bit -Eng MSSQL 2012 R2 64 Bit
Varsayılan

İlginize teşekkür ederim.

Sorunu şu şekilde hallettim...Sizin kullandığınız SQL Builder benzeri bir çalışma kullandım Sql cümleciğinin syntax biçimlerini tespit ettim.
daha sonra Locals Window dan F8 ile stepleyerek "S" değişkenine atadığım SQL sorgusunun vba den SQL e dönüşümünü gözlemleyerek , esas SQL kodunu VBA e çevirirken hangi syntax hatalarını yaptığımı tespit ettim...BOŞLUK , space , virgül ve çift tırnak hatalarım vardı , onları düzelttim , son olarak DATE COVERTTIME da yazım hatam vardı onu düzelttim...ve aşağıdaki son halini elde ettim ve sonuca ulaştım....

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
tarih1 = Format(Range("B1").Value, "yyyy-mm-dd")
tarih2 = Format(Range("C1").Value, "yyyy-mm-dd")

s = "SELECT SUM(LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.AMOUNT) AS Giren "
s = s & "FROM LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_KSCARD INNER JOIN "
s = s & "LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES ON LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_KSCARD.LOGICALREF = LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.CARDREF "
s = s & "WHERE (LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.DATE_ BETWEEN CONVERT(DATETIME, '" & tarih1 & "', 102) AND CONVERT(DATETIME, '" & tarih2 & "', 102)) AND"
s = s & "(LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_01_KSLINES.SIGN = 0) AND (LG_" & Format(Sheets("SETUP").Range("B5"), "000") & "_KSCARD.LOGICALREF = 1)"
__________________
[SIZE=1][B][COLOR=Red]MS Office Professional Plus 2013 ENGLISH , MS SQL Server 2012 R2 , Visual Studio 2010 , Logo Tiger Plus 2.29
[/COLOR][/B][/SIZE]
lsuersoy Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 12:46


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri- Çorlu Çelik Konstruksiyon-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden