Ler uma pequena informação no Microsoft SQL Server
Moderador: Moderadores
-
Eduardo Pinho
- Colaborador

- Mensagens: 72
- Registrado em: 13 Jun 2014 19:30
- Localização: Niteroi
Ler uma pequena informação no Microsoft SQL Server
Amigos,
Por hobby faço uns programinhas em harbour 3.0 + dbf/cdx na empresa que me ajudam bastante.
Mas outros sistemas sao feitos pelo programador oficial em VFP + Microsoft SQL Server.
Ocorre que as vezes preciso buscar só uma informaçãozinha lá no SQL, não pretendo gravar no SQL, alterar as tabelas, mas somente ler um campo ou outro, e isso as vezes me faz falta.
O problema é que nem sei por onde começar. Se eu aprender a conectar no BD, a parte de comandos query, busca de dados, o programador daqui, me dá dicas, isso é tranquilo.
Mas no prg como fazer pra conectar no BD ?
O que tenho que adicionar no main() ? (includes, requests, libs)
Tenho que adicionar algo no hbp tambem ?
E como os dados voltam ? É um array ? Um DBF temporário ? Nao manjo nada desses acessos SQL...
Se alguem puder ajudar agradeço.
Abcs
Por hobby faço uns programinhas em harbour 3.0 + dbf/cdx na empresa que me ajudam bastante.
Mas outros sistemas sao feitos pelo programador oficial em VFP + Microsoft SQL Server.
Ocorre que as vezes preciso buscar só uma informaçãozinha lá no SQL, não pretendo gravar no SQL, alterar as tabelas, mas somente ler um campo ou outro, e isso as vezes me faz falta.
O problema é que nem sei por onde começar. Se eu aprender a conectar no BD, a parte de comandos query, busca de dados, o programador daqui, me dá dicas, isso é tranquilo.
Mas no prg como fazer pra conectar no BD ?
O que tenho que adicionar no main() ? (includes, requests, libs)
Tenho que adicionar algo no hbp tambem ?
E como os dados voltam ? É um array ? Um DBF temporário ? Nao manjo nada desses acessos SQL...
Se alguem puder ajudar agradeço.
Abcs
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ler uma pequena informação no Microsoft SQL Server
Como tá usando uma versão do Harbour antiga, e vai receber ajuda de alguém de outra linguagem de programação, talvez o mais prático seja ADO.
Confirme no 3.0 se pode ser CreateObject(), win_OleCreateObject(), ou se tem algum equivalente.
NÃO SERVE o compatível com XHarbour, no XHarbour não funciona, então compatível com XHarbour também não funciona.
Só pra lembrar: pegando a versão mais recente do hbmk2.exe, pode usar a opção -hb30 pra usá-lo no Harbour 3.0.
Confirme no 3.0 se pode ser CreateObject(), win_OleCreateObject(), ou se tem algum equivalente.
NÃO SERVE o compatível com XHarbour, no XHarbour não funciona, então compatível com XHarbour também não funciona.
Código: Selecionar todos
cn := win_OleCreateObject( "ADODB.Connection" )
cn:ConnectionString := "xxxxxxxx"
cn:Open()
Rs := cn:Execute( "SELECT bla bla bla" )
DO WHLE ! Rs:Eof()
? Rs:Fields( "CODIGO" ):Value
Rs:MoveNext()
ENDDO
Rs:Close()
Cn:Close()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Ler uma pequena informação no Microsoft SQL Server
Olá!
O tópico Harbour+ADO+SQL Server 2008 + Automação OLE - Como fazer? contém algumas informações que podem ajudar.
O tópico Harbour+ADO+SQL Server 2008 + Automação OLE - Como fazer? contém algumas informações que podem ajudar.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
Eduardo Pinho
- Colaborador

- Mensagens: 72
- Registrado em: 13 Jun 2014 19:30
- Localização: Niteroi
Ler uma pequena informação no Microsoft SQL Server
Obrigado a todos pelo suporte.
Estou avancando, Com as dicas já resolvi os problemas da compilacao adicionando a biblioteca hbwin ao hbp, gerei o exe.
Mas ao rodar, dá erro no open() Error WINOLE/1007 Argument error: OPEN (DOS Error -2147352567)
Quintas, vi num outro topico que em 2011 voce teve exatamente o mesmo erro. Lembra como resolveu?
Alguém sabe como resolver? Meu codigo de teste está assim:
Estou avancando, Com as dicas já resolvi os problemas da compilacao adicionando a biblioteca hbwin ao hbp, gerei o exe.
Mas ao rodar, dá erro no open() Error WINOLE/1007 Argument error: OPEN (DOS Error -2147352567)
Quintas, vi num outro topico que em 2011 voce teve exatamente o mesmo erro. Lembra como resolveu?
Alguém sabe como resolver? Meu codigo de teste está assim:
Código: Selecionar todos
REQUEST HB_CodePage_ITISB
REQUEST DBFCDX
func main
local oCn,oRs
#include "hbgtinfo.ch"
#include "inkey.ch"
Set( _SET_CODEPAGE, "ITISB" )
SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
rddsetdefault([DBFCDX])
hb_gtinfo( HB_GTI_WINTITLE , "TESTE SQL" )
hb_gtinfo( HB_GTI_ICONFILE , [rei.ico] )
hb_gtInfo( HB_GTI_FONTNAME , "Lucida Console" )
hb_gtinfo( HB_GTI_FONTSIZE , 24 )
hb_gtinfo( HB_GTI_FONTWIDTH, 36 )
oCn := CreateObject("ADODB.Connection")
oCn:ConnectionString := "Provider=MSOLEDBSQL;Server=SERVIDOR;Database=nfe;UID=wsga_rei;PWD=mypwd;"
oCn:Open() // Aqui, Error WINOLE/1007 Argument error: OPEN (DOS Error -2147352567)
oRs := oCn:Execute("SELECT EmpCodigo,NtfSerie,NtfNumero,dEmi,CNPJ_emit,CPF_emit,xNome,CNPJ_dest,CPF_dest,xNome_dest,vNF WHERE DATEPART(year,dEmi)=2020 ORDER BY EmpCodigo,NtfNumero")
oRs:moveFirst()
clear
Do While ! oRs:eof()
? oRs:Fields("EmpCodigo"):Value
?? oRs:Fields("NtfNumero"):Value
?? oRs:Fields("dEmi"):Value
?? oRs:Fields("xNome_dest"):Value
oRs:MoveNext()
ENDDO
oRs:Close()
oCn:Close()
oRs := Nil
oCn := Nil
RETURN
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Ler uma pequena informação no Microsoft SQL Server
Olá!
Verifique sua sentença SQL. Está faltando a cláusula FROM.
Verifique sua sentença SQL. Está faltando a cláusula FROM.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
Eduardo Pinho
- Colaborador

- Mensagens: 72
- Registrado em: 13 Jun 2014 19:30
- Localização: Niteroi
Ler uma pequena informação no Microsoft SQL Server
Blz, vou checar isso. Mas, salvo engano, o erro dá antes no open(), né isso? O que pode ser?
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ler uma pequena informação no Microsoft SQL Server
Vai por parte:
cn := CreateObject( "ADODB.Connection" )
Isso cria a conexão, apenas um tipo de variável usado em conexão
NÃO dá erro se não conseguir criar
cn:ConnectionString := "bla bla bla"
Isso indica TUDO da conexão: Driver, base de dados, localização, usuário, senha, etc.
Mesmo que coloque informação errada, aqui não dá erro, porque trata-se de uma string
Mas pode dar erro, caso a linha anterior não tenha criado a conexão - não é seu caso
cn:Open()
É aqui que é feita a ligação com o banco de dados, e usa as informações de connectionstring pra encontrar a base de dados
Se não existir o driver dá erro - pode ser SQLServer, MySQL, MariaDB, Excel, etc. dependendo do driver precisa ser instalado. SQL Server geralmente não
se o endereço do servidor estiver errado dá erro
se o usuário/senha estiverem errados dá erro
se o nome da base estiver errado dá erro
se a string estiver errada dá erro - parece ser este o seu erro
As vezes a Microsoft gosta de complicar, parece que pode ser diferente conforme a versão do SQL Server/Windows
https://www.connectionstrings.com/ole-d ... ql-server/
Nesse caso, VOCE vai ter que fazer os testes, afinal é você que tem acesso ao SQL Server.
O ADO é universal, apesar de estar usando Harbour, é igual em outras linguagens. Veja se o programador que já usa esse SQL Server pode ajudar.
Não vamos ter um SQL Server igual pra fazer esses testes, então é com você.
cn := CreateObject( "ADODB.Connection" )
Isso cria a conexão, apenas um tipo de variável usado em conexão
NÃO dá erro se não conseguir criar
cn:ConnectionString := "bla bla bla"
Isso indica TUDO da conexão: Driver, base de dados, localização, usuário, senha, etc.
Mesmo que coloque informação errada, aqui não dá erro, porque trata-se de uma string
Mas pode dar erro, caso a linha anterior não tenha criado a conexão - não é seu caso
cn:Open()
É aqui que é feita a ligação com o banco de dados, e usa as informações de connectionstring pra encontrar a base de dados
Se não existir o driver dá erro - pode ser SQLServer, MySQL, MariaDB, Excel, etc. dependendo do driver precisa ser instalado. SQL Server geralmente não
se o endereço do servidor estiver errado dá erro
se o usuário/senha estiverem errados dá erro
se o nome da base estiver errado dá erro
se a string estiver errada dá erro - parece ser este o seu erro
As vezes a Microsoft gosta de complicar, parece que pode ser diferente conforme a versão do SQL Server/Windows
https://www.connectionstrings.com/ole-d ... ql-server/
Nesse caso, VOCE vai ter que fazer os testes, afinal é você que tem acesso ao SQL Server.
O ADO é universal, apesar de estar usando Harbour, é igual em outras linguagens. Veja se o programador que já usa esse SQL Server pode ajudar.
Não vamos ter um SQL Server igual pra fazer esses testes, então é com você.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Eduardo Pinho
- Colaborador

- Mensagens: 72
- Registrado em: 13 Jun 2014 19:30
- Localização: Niteroi
Ler uma pequena informação no Microsoft SQL Server
Perfeito, Quintas!!
Foquei na string, e o programador conectou via VFP/ADO e olhou a string utilizada.
Foi só trocar o provider de MSOLEDBSQL para SQLOLEDB que ja funcionou...
Já consigo ler as tabelas. Valeu mesmo!!
Obrigado Quintas e alxsts..
Abcs,
Foquei na string, e o programador conectou via VFP/ADO e olhou a string utilizada.
Foi só trocar o provider de MSOLEDBSQL para SQLOLEDB que ja funcionou...
Já consigo ler as tabelas. Valeu mesmo!!
Obrigado Quintas e alxsts..
Abcs,
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ler uma pequena informação no Microsoft SQL Server
Só a título de curiosidade, naquele mesmo site de strings:
Mas é tanta opção, que é difícil ficar testando cada uma, ainda mais pra quem nunca usou.
É por isso que procurei pelo menos mostrar o caminho das pedras.
E esse site é uma boa referência, o problema é que tem muuuuuuuuita variedade de opções.... e por isso só quem tá com a mão na massa pra confirmar.
Também pra curiosidade:
O que altera pra SQL Server, MySQL, MariaDB, PostgreSQL, DBF, Access, Excel, etc.... é essa string.
Por isso esse site é útil.
Mas é tanta opção, que é difícil ficar testando cada uma, ainda mais pra quem nunca usou.
É por isso que procurei pelo menos mostrar o caminho das pedras.
E esse site é uma boa referência, o problema é que tem muuuuuuuuita variedade de opções.... e por isso só quem tá com a mão na massa pra confirmar.
Também pra curiosidade:
O que altera pra SQL Server, MySQL, MariaDB, PostgreSQL, DBF, Access, Excel, etc.... é essa string.
Por isso esse site é útil.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/