gastao Posted March 3, 2014 at 03:50 PM Report #547364 Posted March 3, 2014 at 03:50 PM precisava que me ajudem a fazer um form onde eu tenho um excerto de código sempre igual onde o que me vai mudar é uma variável que é a ligação a Base de dados. como e q poderei fazer essa situação? Ou seja eu tenho vários odbc's , vários nomes e o que me muda é esse odbc. alguém me consegue dar uma ajuda??
nelsonr Posted March 3, 2014 at 04:01 PM Report #547366 Posted March 3, 2014 at 04:01 PM Podes mostrar como tens o código agora?
gastao Posted March 3, 2014 at 04:08 PM Author Report #547367 Posted March 3, 2014 at 04:08 PM (edited) simplesmente não tenho, pode ser um for ou um while era só para não me tar a repetir 19 vezes o código. só que eu vou usar 19x's o odbc alguém me consegue dar uma ajuda Dim odbc1 As String = GetIniSetting("Odbc1", "database", strIniFile) Dim odbc2 As String = GetIniSetting("Odbc2", "database", strIniFile) ... Dim odbc19 As String = GetIniSetting("Odbc3", "database", strIniFile) 'Try Dim conn As OdbcConnection Dim connectionString As String connectionString = "DSN=" & odbc1 & ";UID=" & odbcuser & ";Pwd=" & sqlpass & ";" conn = New OdbcConnection(connectionString) conn.Open() Dim cmd As New OdbcCommand Dim reader As OdbcDataReader ' Executa o Procedimento inserido na Base de dados que é copiar as vendas para a tabela trabalhada cmd.CommandText = "CopyTransaction" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = conn reader = cmd.ExecuteReader() conn.Close() Edited March 3, 2014 at 04:10 PM by gastao
nelsonr Posted March 3, 2014 at 04:30 PM Report #547375 Posted March 3, 2014 at 04:30 PM Algo assim? For odbcNum As Integer = 1 To 19 Dim odbc As String = GetIniSetting("Odbc" & odbcNum, "database", strIniFile) Using conn As OdbcConnection = New OdbcConnection("DSN=" & odbc & ";UID=" & odbcuser & ";Pwd=" & sqlpass & ";") conn.Open() Dim cmd As New OdbcCommand("CopyTransaction", conn) cmd.CommandType = CommandType.StoredProcedure cmd.ExecuteNonQuery() End Using Next
gastao Posted March 3, 2014 at 04:39 PM Author Report #547381 Posted March 3, 2014 at 04:39 PM sim é algo desse género, mas como é que depois eu mudo ali os vários odbc's???? isso é que eu não tou a perceber...
nelsonr Posted March 3, 2014 at 05:20 PM Report #547395 Posted March 3, 2014 at 05:20 PM Então, como tinhas indicado no exemplo, faz esse código, tendo como parametro o nome "odbc1" até ao "odbc19". Ou preferes definir uma lista de nomes, algo assim? Dim listaOdbcs As String() = {"odbc1", "odbc2", "odbc3", "odbc4"} ' For Each nomeOdbc As String In listaOdbcs Dim odbc As String = GetIniSetting(nomeOdbc, "database", strIniFile) Using conn As OdbcConnection = New OdbcConnection("DSN=" & odbc & ";UID=" & odbcuser & ";Pwd=" & sqlpass & ";") conn.Open() Dim cmd As New OdbcCommand("CopyTransaction", conn) cmd.CommandType = CommandType.StoredProcedure cmd.ExecuteNonQuery() End Using Next
gastao Posted March 3, 2014 at 05:33 PM Author Report #547402 Posted March 3, 2014 at 05:33 PM tentei fazer como fizes te no 1 que me envias te só que ele so me corre 1x não me passa para o 2º odbc vou tentar fazer desta 2a forma... a ver se passa para o 2º odbc desta forma não o csg por a correr
nelsonr Posted March 3, 2014 at 05:47 PM Report #547409 Posted March 3, 2014 at 05:47 PM Como não passa? Está a dar algum erro? Fizeste debug a ver o que está a fazer?
gastao Posted March 3, 2014 at 05:52 PM Author Report #547411 Posted March 3, 2014 at 05:52 PM da segunda forma que me envias te funciona na perfeição, da primeira forma não funciona ele não passa sequer...
gastao Posted March 3, 2014 at 06:09 PM Author Report #547417 Posted March 3, 2014 at 06:09 PM só mais uma pergunta imagina que uma conexão está em baixo ele para me o programa todo, eu não tenho forma que ele passe por cima se ele não se ligar?? usando tipo um try catch??'
nelsonr Posted March 3, 2014 at 06:12 PM Report #547418 Posted March 3, 2014 at 06:12 PM Sim, colocas o bloco using dentro do try
gastao Posted March 3, 2014 at 07:07 PM Author Report #547423 Posted March 3, 2014 at 07:07 PM (edited) mas a questão é que imagina ele rebenta me logo no 1º odbc ele para e não faz os próximos... eu queria é que ele continuasse a fazer, coloco o using como?' csgs dar me um exemplo? Try Dim strIniFile As String = My.Application.Info.DirectoryPath & "\config.ini" 'Le qual o caminho das Facturas escrito no Ini Dim odbc1 As String = GetIniSetting("Odbc1", "teste", strIniFile) Dim odbc2 As String = GetIniSetting("Odbc2", "teste", strIniFile) ... Dim odbc19 As String = GetIniSetting("Odbc19", "teste", strIniFile) Dim odbcuser As String = GetIniSetting("User", "teste", strIniFile) Dim odbcpass As String = GetIniSetting("Password", "teste", strIniFile) Dim caminho1 As String = GetIniSetting("caminho1", "teste", strIniFile) Dim sqlpass As String = odbcpass sqlpass = AES_Decrypt(sqlpass, "somepassword") Dim listaOdbcs As String() = {"odbc1", "odbc2"} ' For Each nomeOdbc As String In listaOdbcs Dim odbc As String = GetIniSetting(nomeOdbc, "teste", strIniFile) Using conn As OdbcConnection = New OdbcConnection("DSN=" & odbc & ";UID=" & odbcuser & ";Pwd=" & sqlpass & ";") conn.Open() Dim cmd As New OdbcCommand("CopyTransaction", conn) cmd.CommandType = CommandType.StoredProcedure cmd.ExecuteNonQuery() End Using Next Catch ex As Exception MsgBox(ex.Message) Finally End Try Edited March 3, 2014 at 07:10 PM by gastao
nelsonr Posted March 3, 2014 at 08:34 PM Report #547434 Posted March 3, 2014 at 08:34 PM Dim listaOdbcs As String() = {"odbc1", "odbc2", "odbc3", "odbc4"} For Each nomeOdbc As String In listaOdbcs Try Dim odbc As String = GetIniSetting(nomeOdbc, "database", strIniFile) Using conn As OdbcConnection = New OdbcConnection("DSN=" & odbc & ";UID=" & odbcuser & ";Pwd=" & sqlpass & ";") conn.Open() Dim cmd As New OdbcCommand("CopyTransaction", conn) cmd.CommandType = CommandType.StoredProcedure cmd.ExecuteNonQuery() End Using Catch End Try Next
gastao Posted March 3, 2014 at 09:22 PM Author Report #547440 Posted March 3, 2014 at 09:22 PM é mesmo isso tava a por o try antes... e que eu assim meto a msgbox a enviar mail para mim e fica a funcionar... perfeito amigo perfeito mm um muito obrigado
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now