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: 3107
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
- JoséQuintas
- Administrador

- Mensagens: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 3107
- 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: 3107
- 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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/