Boa tarde Colegas,
Estou tentando migrar do xharbour para o harbour e estou com o seguinte problema:
Atualmente uso o ADOdb invocado pela Função CreateObject.
Ocorre que aplicada a consulta abaixo no Xharbour, retorna resultado, se vou diretamente no Access e executo internamente também retorna, no entanto no Harbour nada retorna.
Select Texto from Formularios where cod in(0,12) and codigo= 68 and validade=#2019-02-12 10:57:02#
O campo validade é do tipo datetime, quando a consulta é apenas uma data #9999-12-31# cheia sem o horário funciona nos três sistemas, com horário funciona apenas no xharbour e no próprio Access.
Alguém por acaso faz uso de consulta utilizando um campo datetime no harbour e o faz com sucesso?
Versão do harbour: Harbour 3.2.0dev (r1901151150)
Compilador: MinGW GNU C 8.1 (32-bit)
o xHarbour está compilado com o Borland 5.5
Grato
Ivanil
Possivel incopatibilidade CreateObject harbour x xHarbour
Moderador: Moderadores
-
ivanil.marcelino
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 26 Jul 2017 09:08
- Localização: Floripa/sc
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Possivel incopatibilidade CreateObject harbour x xHarbour
Sinceramente... me admira funcionar no XHarbour kkkkk
Só a título de curiosidade, não significa problema, mas esse Harbour não é oficial. mingw 8.1 não é usado oficialmente nem no Harbour 3.4.
Aqui eu uso Harbour 3.4 com mingw 8.1, mas oficialmente não chegou a essa versão de mingw.
Como eu disse, é apenas pra curiosidade. Uso faz tempo e não tenho problema com isso.
Código: Selecionar todos
cn := win_OleCreateObject( "ADODB.Connection" )
cn:ConnectionString := "....."
Rs := cn:Execute( "SELECT ...." )
DO WHILE ! Rs:Eof()
? rs:Fields( "CAMPODATA" ):Value
rs:MoveNext()
ENDDO
rs:Close()
cn:Close()
Aqui eu uso Harbour 3.4 com mingw 8.1, mas oficialmente não chegou a essa versão de mingw.
Como eu disse, é apenas pra curiosidade. Uso faz tempo e não tenho problema com isso.
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/
-
ivanil.marcelino
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 26 Jul 2017 09:08
- Localização: Floripa/sc
Possivel incopatibilidade CreateObject harbour x xHarbour
Pois é meu amigo,
Mas veja bem, este exemplo que postaste não é o problema, o problema esta no retorno da consulta, para fazer funcionar aqui tive alterar o final da consulta de:
Select Texto from Formularios where cod in(0,12) and codigo= 68 and validade=#2019-02-12 10:57:02#
para
Select Texto from Formularios where cod in(0,12) and codigo= 68 and validade>#2019-02-12 10:57:01# and and validade<#2019-02-12 10:57:03# assim funcionou normal, mas quando alguém de fora lê um código assim, minha orelha deve queimar...
Eu estava usando o CreateObject diretamente, acredito que seja o mesmo win_createObject, mas vou trocar e ver o resultado.
Grato
Ivanil
Mas veja bem, este exemplo que postaste não é o problema, o problema esta no retorno da consulta, para fazer funcionar aqui tive alterar o final da consulta de:
Select Texto from Formularios where cod in(0,12) and codigo= 68 and validade=#2019-02-12 10:57:02#
para
Select Texto from Formularios where cod in(0,12) and codigo= 68 and validade>#2019-02-12 10:57:01# and and validade<#2019-02-12 10:57:03# assim funcionou normal, mas quando alguém de fora lê um código assim, minha orelha deve queimar...
Eu estava usando o CreateObject diretamente, acredito que seja o mesmo win_createObject, mas vou trocar e ver o resultado.
Grato
Ivanil
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Possivel incopatibilidade CreateObject harbour x xHarbour
Numa pesquisa no google:
Código: Selecionar todos
SELECT * FROM
data
WHERE datetime BETWEEN('2009-10-20 00:00:00' AND '2009-10-20 23:59:59')
ORDER BY datetime DESC
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/
-
ivanil.marcelino
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 26 Jul 2017 09:08
- Localização: Floripa/sc
Possivel incopatibilidade CreateObject harbour x xHarbour
Vou postar um código, quem puder testar de repente é algo apenas em conflito de versões, como o amigo Quintas já mencionou.
Código: Selecionar todos
Function Main
Local cSQL,rs,i:=0
Local cn:=win_OleCreateObject("ADODB.Connection")
Local cx:=win_OleCreateObject("ADOX.Catalog")
cx:Create("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=5;Data Source=c:\temp\teste.mdb")
cn:ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\teste.mdb"
cn:open()
cSQL:="CREATE TABLE Formularios("+;
"codigo Int not Null,"+;
"Validade SmallDateTime not Null,"+;
"CONSTRAINT PK_Formularios Primary Key (codigo))"
cn:Execute(cSQL)
cn:Execute("insert into Formularios (codigo,validade) values (1,'2019-02-12 01:52:01');")
cn:Execute("insert into Formularios (codigo,validade) values (2,'2019-02-12 01:52:02');")
cn:Execute("insert into Formularios (codigo,validade) values (3,'2019-02-12 01:52:03');")
rs:=cn:Execute("Select * from Formularios")
While !Rs:Eof()
?(str(rs:Fields["codigo"]:value,3)+cSTR(rs:fields["validade"]:value))
rs:moveNext()
enddo
//Em harbour nao encontra...porém tanto xharbour como o próprio access encontra normalmente
rs:=cn:Execute("Select validade from formularios where validade=#2019-02-12 01:5:02#")
if rs:Eof()
Alert("Nada encontrado...")
else
alert(cStr(rs:Fields[0]:value))
endif
//única forma de harbour encontrar, usando um intervalo...
rs:=cn:Execute("Select validade from formularios where validade >#2019-02-12 01:52:01# and validade<#2019-02-12 01:52:03#")
if rs:Eof()
Alert("Nada encontrado...")
else
alert(cStr(rs:Fields[0]:value))
endif
While !Rs:Eof()
i++
rs:Movenext()
enddo
alert("encontrado "+str(i)+" vezes")
cn:close()
Return .t.