Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
182
Assunto : Visual Basic
Titulo: Listar DSN's do ODBC

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Para listar DSN's do ODBC devemos fazer uso de 2 funções da API : SQLAllocEnv e SQLDataSources.

A instrução SQLAllocEnv inicia a comunicação com o ODBC, enquanto que a instrução SQLDataSources recupera datasources do ODBC. As duas precisarão ser declaradas, veja :


Private Declare Function SQLAllocEnv Lib "ODBC32.DLL" (env As Long) As Integer
Private Declare Function SQLDataSources Lib "ODBC32.DLL" (ByVal henv As Long, ByVal fdir As Integer, ByVal szDSN As String, ByVal cbDSNMAx As Integer, pcbDSN As Integer, ByVal szDesc As String, ByVal cbDescMax As Integer, pcbDesc As Integer) As Integer

Observe que o primeiro parâmetro da instrução SQLDataSources é justamente henv, o valor de env retornado pela função SQLAllocEnv.

A função SQLDataSources devolve strings em suas variáveis, portanto, como todas as funções da API, as strings precisam ter seu espaço pré-alocado ao serem passadas para a função e voltaram preenchidas com os dados que desejamos.

Para cada string retornado (nome do datasource e descrição) é passada a variável string, um tamanho máximo e uma variável long que retornará com o tamanho real da informação.

O 2o parâmetro, logo depois de Env, é a "direção" de busca. No caso, 2 significa ler o 1o DSN e 1 ler o próximo DSN.

Vejamos um algorítimo para preencher uma listbox com os DSN's existentes. Observem que estamos usando um truque adicional - estamos recebendo a listbox como parâmetro, desta forma tornando esta sub bem genérica :


Private Sub GetDataSources(listctrl As Control)
Dim DataSource As String, Description As String
Dim DataSourceLen As Integer, DescriptionLen As Integer
Dim retcode As Integer
Dim henv As Long
If SQLAllocEnv(henv) <> -1 Then
'Faz a alocação do environment e verifica se tudo ocorreu bem
'Pré-aloca as variáveis string
DataSource = String$(32, 32)
Description = String$(255, 32)
'No primeiro acesso precisa recuperar o 1o DSN
retcode = SQLDataSources(henv, 2, DataSource, Len(DataSource), DataSourceLen, Description, Len(Description), DescriptionLen)
'Enquanto o código de retorno for válido continua recuperando os próximos DSN's
While retcode = 0 Or retcode = 1
'Adiciona na listbox o DSN recuperado
listctrl.AddItem Mid(DataSource, 1, DataSourceLen)
'Prepara novamente as variáveis string
DataSource = String$(32, 32)
Description = String$(255, 32)
'Obtem o próximo DSN
retcode = SQLDataSources(henv, 1, DataSource, Len(DataSource), DataSourceLen, Description, Len(Description), DescriptionLen)
Wend
End If
End Sub


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br