Newsgroup: it.comp.lang.visual-basic
Titolo: Formattazione di stringhe SQL

Ciao
mi capita spesso di copiare ed incollare delle stringhe SQL nel codice
VB, ma ovviamente la stringa va successivamente formattata
sintatticamente affinchè funzioni.
Conoscete qualche ADD-IN per VB o programma che effettui tale
formattazione, almeno il ritorno a capo della stringa.
Grazie a tutti.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Conoscete qualche ADD-IN per VB o programma che effettui tale
----------------------------------------------------------------------------
------------------------------------------
1- Costruisci una maschera
2- Aggiungi una casella di testo:
 Name:txtSQL
 Height:1575
 Width:9255
 Multiline=True
3- Aggiungi una seconda casella di testo:
 Name:txtVBA
 Height:2895
 Width:9255
 Multiline=True
4- Aggiungi un Pulsante
 Name:cmdRun
 Caption:Costrusci Codice
 Nell'evento:
 Private Sub cmdRun_Click()
      Call CostruisciCodice
 End Sub
5- Aggiungi un Pulsante
 Name:cmsRipristina
 Caption:Ripristina
 Nell'evento:
 Private Sub cmsRipristina_Click()
      txtSQL.Text = ""
      txtVBA.Text = ""
 End Sub
6- Aggiungi la Sub:
Private Sub CostruisciCodice()
    Const intKEYWORDMAX = 12
    Const strLINE = "  strSQL = strSQL & "
    Const intLINEUP = 12
    Const strCRTEXT = " & vbCrLf"
  Dim strSQl      As String
  Dim strIn       As String
  Dim lngChar     As Long
  Dim blnkeyWord  As Boolean
  Dim intKeyWord  As Integer
  Dim strQ        As String
  Dim lngEnd      As Long
  Dim strOut      As String
  ReDim strKeyWord(intKEYWORDMAX) As String
  strKeyWord(1) = "INNER JOIN"
  strKeyWord(2) = "LEFT JOIN"
  strKeyWord(3) = "RIGHT JOIN"
  strKeyWord(4) = "WHERE"
  strKeyWord(5) = "GROUP BY"
  strKeyWord(6) = "ORDER BY"
  strKeyWord(7) = "HAVING"
  strKeyWord(8) = "ON"
  strKeyWord(9) = "FROM"
  strKeyWord(10) = ","
  strKeyWord(11) = "AND"
  strKeyWord(12) = "OR"
  strQ = Chr$(34)
  strOut = "  Dim strSQl As String" & vbCrLf
  strOut = strOut & "  strSQL = " & strQ
  If Not IsNull(txtSQL.Text) Then
    strSQl = (txtSQL.Text)
    lngChar = 1
    Do Until lngChar > Len(strSQl)
      blnkeyWord = False
      For intKeyWord = 1 To intKEYWORDMAX
        If Mid(strSQl, lngChar, Len(strKeyWord(intKeyWord)) + 1) =
(strKeyWord(intKeyWord) & " ") Then
          blnkeyWord = True
          Exit For
        End If
      Next intKeyWord
      If blnkeyWord Then
        strOut = strOut & strQ & strCRTEXT & vbCrLf & strLINE & strQ &
Space$(intLINEUP - Len(strKeyWord(intKeyWord))) & strKeyWord(intKeyWord)
        lngChar = lngChar + Len(strKeyWord(intKeyWord))
      ElseIf Asc(Mid$(strSQl, lngChar, 1)) = 13 Or Asc(Mid$(strSQl, lngChar,
1)) = 10 Then
        lngChar = lngChar + 1
      Else
        Select Case Asc(Mid$(strSQl, lngChar, 1))
        Case 39
          lngEnd = InStr(lngChar + 1, strSQl, Mid(strSQl, lngChar, 1))
          strOut = strOut & Mid(strSQl, lngChar, lngEnd - lngChar + 1)
          lngChar = lngEnd + 1
        Case 34
          lngEnd = InStr(lngChar + 1, strSQl, Mid(strSQl, lngChar, 1))
          strOut = strOut & strQ & Mid(strSQl, lngChar, lngEnd - lngChar +
1) & strQ
          lngChar = lngEnd + 1
        Case 91
          lngEnd = InStr(lngChar + 1, strSQl, "]")
          strOut = strOut & Mid(strSQl, lngChar, lngEnd - lngChar + 1)
          lngChar = lngEnd + 1
        Case Else
          lngEnd = lngChar
          strOut = strOut & Mid(strSQl, lngChar, lngEnd - lngChar + 1)
          lngChar = lngEnd + 1
        End Select
      End If
    Loop
  End If
  txtVBA.Text = strOut & strQ
End Sub
7- Costruisci con Access o SQL Server (Vista) l'istruzione SQL
8- Copiala e incollala nella TextBox Name:txtSQL
9- Clic sul pulsante: Name:cmdRun
10- Nella casella: Name:txtVBA sarà servita l'istruzione SQL formattata per
essere utilizzata in VBA;
11- e Buon Codice
giuseppeD