Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

Mostrando postagens com marcador connect. Mostrar todas as postagens
Mostrando postagens com marcador connect. Mostrar todas as postagens

PIECE OF CAKE - Connecting to Oracle 12g with Excel VBA


Um aplicativo muito antigo ao qual presto suporte há vários anos carrega dados de planilhas do Excel em um banco de dados de relatórios. Essas planilhas do Excel sempre foram atualizadas manualmente por vários usuários. No entanto, como os dados que os usuários estão inserindo nessas planilhas são primeiro inseridos em outro banco de dados de aplicativos, esses usuários têm feito uma entrada dupla - um processo redundante que pode ser facilmente corrigido por vários meios.

Idealmente, a solução para este problema seria extrair os dados do banco de dados do aplicativo e carregá-lo no banco de dados de relatórios usando um pacote SSIS. Infelizmente, isso exigiria alguma readequação do aplicativo que carrega dados no banco de dados de relatórios, e eu (e o cliente) não possuímos largura de banda para isso. Então, encontrei uma solução rápida que deixou todos felizes - Usar um script VBA para preencher automaticamente as planilhas com dados quando os usuários as abrirem.

A parte complicada aqui foi fazer com que o Excel se conectasse ao Oracle, com um mínimo de trabalho a ser feito nos PCs dos usuários, que estão longe da minha localização.

Primeiro, não exigir que esses usuários tenham o SQL Plus ou quaisquer ferramentas de desenvolvimento para Oracle, o software de cliente completo era desnecessário.

Tenho o software Instant Client instalado nos PCs, então adicionei as informações de conexão do banco de dados necessárias ao arquivo tnsnames.ora .

Nota: no Instant Client (ou pelo menos na nossa configuração, usando a versão 11.2.0.4), o arquivo tnsnames está em 
C: \ oracle \ instantclient_11_2_0_4 em vez de em C: \ oracle \ product \ 11.2.0.4 \ client_1 \ NETWORK \ ADMIN como normalmente seria no cliente Oracle completo.


A conexão no VBA foi bastante simples, mas não imediatamente óbvia: note que a seqüência de conexão inclui Microsoft ODBC Driver for Oracle em vez de um driver Oracle; Mesmo que isso seja usado, nenhuma conexão ODBC precisa ser configurada no Administrador de Fonte de Dados ODBC. É imperativo apenas que as entradas apropriadas existam no arquivo tnsnames.ora e que a Biblioteca de Objetos de Dados Microsoft ActiveX esteja instalada e referenciada no Excel. (Adicionar Referências, navegando para Ferramentas -> Referências no editor VBA no Excel.)

Dim SQL_String As String
Dim dbConnectStr As String
Dim con As New ADODB.Connection
Dim recset As New ADODB.Recordset
Dim strUid As String
Dim strPwd As String
Dim strEnv As String
Dim strDSN As String
Dim iRow As Integer    


strEnv = "prod"
strUid = "username"
strPwd = "password"

If strEnv = "prod" Then
    Let strDSN = "(prod database net_service_name* from tnsnames)"
Else
    Let strDSN = "(dev database net_service_name* from tnsnames)"
End If
      
dbConnectStr = "Driver={Microsoft ODBC for Oracle}; " & _
        "Server=" & strDSN & ";" & _
        "uid=" & strUid & ";pwd=" & strPwd & ";"
   
con.ConnectionString = dbConnectStr    
con.Open   

Let SQL_String = "(insert SQL query here)"
       
recset.Open SQL_String, con

iRow = 0 
Do While Not recset.EOF
     'Have a loop here to go through all the fields
    Let Sheet1.Range("A" & iRow).Value = recset.Fields("colname") ' colname = Column Name from SQL query
    
    ' &c. ...

    Let iRow = iRow + 1
    recset.MoveNext
Loop

recset.Close
con.Close


#A&A #PIECEOFCAKE #POC #VBA #oracle #Connect



Consulte-nos

⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 


⬛◼◾▪ CONTATO ▪

Conectando-se ao DB2

Conectando-se ao DB2


Abaixo está uma pequena rotina VBA executada no MS Excel para consultar uma tabela usando o driver de ODBC. Precisa limpar um pouco, declarar minhas variáveis, etc, mas funciona.

Eu sempre achei difícil deixar um exemplo completo disso na Web. Tenho certeza que existe algum exemplo completo disso por aí, mas quis deixar minha contribuição breve. Essa versão é boa devido ao usuário precisar de uma conexão ODBC em sua máquina. Automaticamente limitando o acesso cliente a um login que deva funcionar.

Sub transfer()

Dim varState As String

Set CS = CreateObject(“ADODB.Connection”)Set RS = CreateObject(“ADODB.Recordset”)

‘Retrieve values from Cells on the sheet to use as selections in the query belowvarState = ActiveSheet.Range(“C2”).ValuevarFrom_Date = ActiveSheet.Range(“B3”).ValuevarTo_Date = ActiveSheet.Range(“B4”).Value‘ ISeries connection String‘ConnectString = “Driver={ISeries Access ODBC Driver};System=10.1.4.1;Uid=xxxxx;Pwd=xxxxx;Library=PWRDTA41;QueryTimeout=0”ConnectString = “Driver={ISeries Access ODBC Driver};System=10.1.4.1;Library=PWRDTA41;QueryTimeout=0”

CS.Open (ConnectString)

SqlString = “SELECT hhicusn , C.FFDCNMB, C.FFDSTEB, hhiclsn, SUM(hhiqysa), SUM(hhiexsn), SUM(hhiexac) ” & _” FROM pwrdta41.hhiorddp ” & _” left outer join PWRDTA41.FFDCSTBP c” & _” ON hhicusn = c.ffdcusn and” & _” hhidivn = c.ffddivn and” & _” c.ffdcmpn = hhicmpn and” & _” c.ffddptn = hhidptn” & _” WHERE hhidtei between ” & varFrom_Date & ” and ” & varTo_Date & _” and hhiclsn = ‘105’ and c.ffdsteb = ‘” & varState & “‘” & _” GROUP BY hhicusn, c.ffdcnmb, c.ffdsteb, hhiclsn” & _” ORDER BY hhicusn”

‘Message box can be used for debugging the SQL statement‘MsgBox (SqlString)

RS.Open SqlString, CS

‘Clear Previous contents of CellsCells.SelectActiveSheet.Range(“A7:Z65535”).ClearContents‘copy the Recordset to excel sheet starting at A7ActiveSheet.Range(“A7”).CopyFromRecordset RS

‘Close Connection and RecordSetRS.CloseCS.Close‘Reset cell back to A1ActiveSheet.Range(“A1”).Select

End Sub



Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

Conectando-se ao Oracle

Conectando-se ao Oracle



Use o código abaixo para se conectar ao Banco de Dados Oracle:
Sub Ora_Connection()  
Dim rs As ADODB.Recordset  Dim query As String  Set con = New ADODB.Connection  Set rs = New ADODB.Recordset  '---- Replace below highlighted names with the corresponding values  strCon = "Driver={Microsoft ODBC for Oracle}; " & _  "CONNECTSTRING=(DESCRIPTION=" & _  "(ADDRESS=(PROTOCOL=TCP)" & _  "(HOST=Your Host Name)(PORT=Port Number))" & _  "(CONNECT_DATA=(SID=SID of your Database))); uid=User ID; pwd=Password;"  '---  Open   the above connection string.  con.Open (strCon)  '---  Now connection is open and you can use queries to execute them.   '---  It will be open till you close the connection  
End Sub  
Dim con As ADODB.Connection  

Oracle Connection String with Service:


Sub Ora_Connection()  
Dim con As ADODB.Connection  Dim rs As ADODB.Recordset  Dim query As String  Set con = New ADODB.Connection  Set rs = New ADODB.Recordset  '---  Replace below highlighted names with the corresponding values  strCon = "Driver={Microsoft ODBC for Oracle}; " & _  "CONNECTSTRING=(DESCRIPTION=" & _  "(ADDRESS=(PROTOCOL=TCP)" & _  "(HOST=Your Host Name)(PORT=Enter Port Number))" & _  "(CONNECT_DATA=(SERVICE_NAME=database))); uid=Enter User ID; pwd=Enter Password;"  '---  Open the above connection string.  con.Open (strCon)  '---  Now connection is open and you can use queries to execute them.  '---  It will be open till you close the connection  
End Sub 



Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

Conectando-se ao SQL Server - Connect to SQL Server

Conectando-se ao SQL Server - Connect to SQL Server


Não se esqueça:
Tools -> References -> Microsoft ActiveX Data Objects 2.8 Library



Sub ConnectSqlServer()

    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConnString As String

    ' Create the connection string.
    sConnString = "Provider=SQLOLEDB;Data Source=INSTANCE\SQLEXPRESS;" & _
                  "Initial Catalog=MyDatabaseName;" & _
                  "Integrated Security=SSPI;"
    
    ' Create the Connection and Recordset objects.
    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    ' Open the connection and execute.
    conn.Open sConnString
    Set rs = conn.Execute("SELECT * FROM Table1;")
    
    ' Check we have data.
    If Not rs.EOF Then
        ' Transfer result.
        Sheets(1).Range("A1").CopyFromRecordset rs
    ' Close the recordset
        rs.Close
    Else
        MsgBox "Error: No records returned.", vbCritical
    End If

    ' Clean up
    If CBool(conn.State And adStateOpen) Then conn.Close
    Set conn = Nothing
    Set rs = Nothing
    
End Sub

Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

VBA Access Basic - Usando o OLEDB para conectar arquivos MDB - Use OLEDB to connect with mdb file

Conectando arquivos MDB.

Segue:


'Microsoft ActiveX Data Objects Recordset 2.7 Library
Sub ConnectionExample1()
   Dim conn As ADODB.Connection
   Set conn = New ADODB.Connection

   With conn
      Let .Provider = "Microsoft.Jet.OLEDB.4.0;"
      Let .ConnectionString = "Data Source=" & _
        CurrentProject.Path & "\mydb.mdb"
   End With

   conn.Open

   MsgBox "Conexão foi aberta!"

   conn.Close

   Set conn = Nothing

   MsgBox "Conexão foi Fechada!"
End Sub

Tags: VBA, Access, connect, SQL, database,  Connecting, Server, Data Source, ADODB, SQLOLEDB, MDB,


VBA Access Basic - Abrindo um banco de dados no modo READ ONLY - Opening a Database in Read-Only Mode

Abrindo um banco de dados no modo READ ONLY.

Segue:

Sub Open_ReadOnly()
   Dim conn As ADODB.Connection
   Dim strDb As String

   On Error GoTo ErrorHandler

   Let strDb = CurrentProject.Path & "\Bernardess\mydb.mdb"

   Set conn = New ADODB.Connection

   With conn
      Let .Provider = "Microsoft.Jet.OLEDB.4.0;"
      Let .Mode = adModeRead
      Let .ConnectionString = "Data Source=" & strDb

      .Open
   End With

   Debug.Print "O banco de dados foi aberto como acesso read-only."

   conn.Close

   Set conn = Nothing

   Debug.Print "Database was closed."
   Exit Sub

ErrorHandler:
   MsgBox Err.Number & ": " & Err.Description
End Sub



Tags: VBA, Access, connect, SQL, database,  Connecting, Server, Data Source, Opening, Read-Only Mode,


VBA Access Basic - Conectando um Banco de Dados através da URL - Connect to database through URL

Conectando um Banco de Dados com Segurança em Nível de Usuário.

Segue:

Sub ConnectToURL()
  On Error GoTo Except
    Dim Connection As New ADODB.Connection

    Connection.Provider = "Microsoft.Jet.OLEDB.4.0"

    Const URL = "http://localhost/access/nwind.mdb"

    Let Connection.ConnectionString = "URL=" & URL
    Let Connection.Mode = adModeReadWrite

    Connection.Open

    MsgBox "Conectado via " & Connection.Provider & _
        "Provedor OLE DB!", vbInformation
    Exit Sub

Except:
    MsgBox Err.Description, vbCritical
End Sub


Tags: VBA, Access, connect, SQL, database, Connecting, Server, Data Source, OLE DB, Opening, URL, 


VBA Access Basic - Conectando um Servidor SQL Server sem o DSN - Connecting to an SQL Server Using a DSN-less Connection

Conectar bancos de dados de SQL é uma rotina comum. Como fazê-lo?

Segue:

Sub Connect_ToSQLServer()
   Dim conn As ADODB.Connection

   Set conn = New ADODB.Connection

   
With conn
      ' Sem o DSN conectamos usando o driver ODBC
      (modifique a informação do Data Source como mostrado abaixo)

      
.Open "Driver={SQL Server};" & _
          "Server=192.128.1.100;" & _
          "UID=myId;" & _
          "PWD=myPassword;" & _
          "Database=SupportDb"
      .Close
   End With

   
Set conn = Nothing
End Sub

Tags: VBA, Access, connect, SQL, database,  Connecting, Server, Data Source, ADODB, SQLOLEDB, DSN, ODBC


VBA Access Basic - Conectando um Banco de Dados com Nome e Usuário - Connect to database with user name and password

Conectando um Banco de Dados com Segurança em Nível de Usuário.

Segue:


Sub addUser() 
   Dim myConnection As ADOX.Catalog
   Dim newUser As ADOX.User
   Dim userName As String
   Dim newPassword As String
   
   Set myConnection = New ADOX.Catalog

   myConnection.ActiveConnection = _
        "Provider = Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\r.mdb;" & _
        "Jet OLEDB:System database=C:\Bernardess\r.mdw;" & _
        "User id=john;Password=;"

   Set newUser = New ADOX.User

   newUser.Name = userName

   myConnection.Users.Append newUser
   myConnection.Users(newUser.Name).changePassword "", newPassword
End Sub

Tags: VBA, Access, connect, SQL, database, Connecting, Server, Data Source, ADOX, Opening, Secured, User Level, Conectando, Banco de Dados, Nome, Usuário, user, name, password


diHITT - Notícias