cancel
Showing results for 
Search instead for 
Did you mean: 

Ligação Visual Basic 2010 ao SAP

Former Member
0 Kudos

Bom dia,

Venho aqui pedir-vos mais uma vez uma grande ajuda!

Estou a fazer uma pequena aplicação que vai ao SAP buscar todos os ContactEmployees de um determinado cliente e apresenta-os numa gridview.

Isto porquê? Algumas pessoas neccesitam de abrir o SAP e pesquisar os contactos, sendo assim fica uma forma mais directa de pesquisar os contactos desejados.

Como tal, e para já, estou a testar a ligação ao SAP mas tenho alguns problemas. Está a dar o seguinte erro: ErrorCode: -111 MessageCode: Failed to Connect to SBOCommon!

Já andei a pesquisar várias resoluções mas até agora sem sucesso!

O código que tenho basicamente é o que vem no SDK mas de qualquer maneira fica aqui:

Dim vCom As SAPbobsCOM.Company

Dim lRetCode, lErrCode As Long

Dim sErrMsg As String

vCom = New SAPbobsCOM.Company

vCom.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005

vCom.Server = "srvsql01"

vCom.CompanyDB = "Empresa"

vCom.UserName = "manager"

vCom.Password = "manager"

vCom.language = SAPbobsCOM.BoSuppLangs.ln_English_Gb

vCom.UseTrusted = False

lRetCode = vCom.Connect()

If lRetCode <> 0 Then

vCom.GetLastError(lErrCode, sErrMsg)

MsgBox("Erro: " & lErrCode & " Mensagem ERRO:: " & sErrMsg)

Me.Close()

Else

MsgBox("Fez Login")

End If

End Sub

End Class

Agradecia sugestões!

Cumprimentos,

Cokz

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Bom dia, tenta o código abaixo e avisa se deu certo. Abraço.

Dim vCom As SAPbobsCOM.Company

Dim lRetCode, lErrCode As Long

Dim sErrMsg As String

vCom = New SAPbobsCOM.Company

vCom.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2005

vCom.CompanyDB = "Empresa"

vCom.DbUserName = "sa"

vCom.DbPassword = "teste"

vCom.Server = "srvsql01"

vCom.LicenseServer = "srvsql01:30000"

vCom.UserName = "manager"

vCom.Password = "manager"

vCom.language = SAPbobsCOM.BoSuppLangs.ln_English_Gb

lRetCode = vCom.Connect()

If lRetCode 0 Then

vCom.GetLastError(lErrCode, sErrMsg)

MsgBox("Erro: " & lErrCode & " Mensagem ERRO:: " & sErrMsg)

Me.Close()

Else

MsgBox("Fez Login")

End If

End Sub

End Class

Former Member
0 Kudos

Bom dia Leandro,

Infelizmente não funcou! :s

Não sei o que poderá ser!

Em aspx funciona bem mas quando tendo passar para o visual basic não funciona e dá sempre esse erro!

Aliás, este código é baseado no sample code do sdk mas não funca! O que lá está é para VB6 mas isso não deveria ser problema, digo eu.

Abraços,

Cokz

Answers (2)

Answers (2)

Former Member
0 Kudos

vcs sabem que só podem compilar em 86x?

Former Member
0 Kudos

Bom dia.

Segue abaixo código em vb.net para conexão ao sdk.

o nome do servidor de licença deve ser o mesmo apontado no servidor de licença. verificar se a porta do servidor é a padrão 30000. Se for não precisa estar colocando o número da porta.

Verificar também que o usuário e senha do banco de dados está habilitado para acesso a base de dados sbocomon e a base de dados que você quer trabalhar do B1.

Este exemplo está apontando para um banco de dados sql 2008.. se for 2005, realize a alteração.

Private Sub BConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BConectar.Click

Dim retval As Integer

Dim retStr As String

oCompany = New SAPbobsCOM.Company

oCompany.Server = "NMS-NOTE-JUNIOR"

oCompany.CompanyDB = "baseaconectar"

oCompany.UserName = "manager"

oCompany.Password = "nms.1234"

oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008

oCompany.DbUserName = "sa"

oCompany.DbPassword = "x2424"

oCompany.LicenseServer = "NMS-NOTE-JUNIOR"

retval = oCompany.Connect

If retval <> 0 Then

oCompany.GetLastError(retval, retStr)

MsgBox("Error " & retval & " " & retStr)

Else

MsgBox("Conectado a Base " & oCompany.CompanyName)

End If

End Sub

At. Junior.

Edited by: Alaito Rosner Junior on Mar 3, 2011 1:08 PM

Former Member
0 Kudos

Viva Júnior.

Obrigado pela resposta!

Aparentemente está a funcionar, pelo menos não dá nenhum erro na ligação!

Agora está a rebentar no MsgBox("Conectado a Base " & oCompany.CompanyName) porque diz que "Tentativa de ler ou escrever na memória protegida. Isto é normalmente uma indicação de que existe outra memória danificada."

Cumprimentos,

Cokz

Former Member
0 Kudos

Pussi carinha.... estranho este erro....

Talvez seria uma pergunta nada haver mas.. qual a versão do seu Framework?

At. Junior.

Former Member
0 Kudos

Viva!

Chiça não digas nada! Não está nada fácil! O mais engraçado é que entretanto, como necessitava disto com alguma "urgência" cá na empresa, fui fazendo em aspx e está a funcionar bem!

A versão do framework é a v4.0.30319.

Mas as outras também estão instaladas. Não sei se isto importante! Ele usa sempre a última versão instalada certo?

Cumprimentos,

Cokz

Former Member
0 Kudos

Boa noite carinha..

então sempre é bom ter a última versão do framework..

mas show de bola que tu conseguiu contornar o problema.

abraços.

Junior

Former Member
0 Kudos

Viva!

Assim que acabar esta aspx vou tentar outra vez no VB a ver se consigo fazer ou não!

Obrigadão!

Cumps,

Cokz

former_member209021
Active Participant
0 Kudos

Boa Tarde Junior...

vi que voce ja andou esquentando a cabeça com as conexoes VB x SAP...

Pois bem, eu estou enrolado com uma parada que ja tinha dado certo há algum tempo atras.

Trata-se da conexao de um pequeno codigo VB com o SAP, veja abaixo:

Dim m_Company As SAPbobsCOM.Company

Public Sub Login()

Dim lRetCode As Integer

Set m_Company = New SAPbobsCOM.Company

m_Company.Server = "SERVIDOR"

m_Company.CompanyDB = "XSBO_CS"

m_Company.UserName = "MANAGER"

m_Company.Password = "CS12345"

m_Company.DbPassword = "sap@123"

m_Company.DbUserName = "sa"

m_Company.LicenseServer = "SERVIDOR:30000"

m_Company.UseTrusted = False

m_Company.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008

m_Company.Language = SAPbobsCOM.BoSuppLangs.ln_Portuguese_Br

lRetCode = m_Company.Connect

If lRetCode <> 0 Then

MsgBox (m_Company.GetLastErrorDescription)

Else

MsgBox ("Conectado na empresa " & m_Company.CompanyName)

End If

End Sub

O que tá pegando agora é que ao precisar reativar essa rotina, estou com problemas nesse login,

o depurador para na linha Dim m_Company As SAPbobsCOM.Company com a seguinte mensagem:

Erro de Compilacao. É impossivel localizar o projeto ou a biblioteca.

Da primeira vez que usei essa rotina o fiz em uma estrutura que nao existe mais... Pode ser que eu esteja apenas esquecendo de alguma coisa...

Dá um help, por favor!!!

Abraco, Wagner

Former Member
0 Kudos

Boa Noite Wagner.

Tente utilizar a estrutura que foi passada acima.

Altere seu código para este exemplo... altere apenas os parâmetros de usuário e senha do bd e do sap.

me da um toque dai como foi o teste.

At. Junior

Former Member
0 Kudos

Boas!

Olha eu com o VB não cheguei a experimentar mais porque eu precisa mesmo de uma coisa que funcionasse num curto espaço de tempo.

Então fiz em aspx que funcionou numa boa! Em VB estava a dar aquele stress que descrevi em cima mas nunca cheguei a perceber bem porque. Talvez por causa da versão do FrameWork não sei...

Abraços e boa sorte com isso!

Former Member
0 Kudos

Wagner, Verifique se a referência SAPbobsCOM esta carregada no seu projeto!