Clipper On Line • Ver Tópico - Tutorial de ADO

Tutorial de ADO

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 08:49

Erro: 1 [MySQL][ODBC 3.51 Driver][mysqld-5.5.48]Incorrect date value: '28188-172-' for column 'INICIOVIG' at row 1 (0x80004005)
Erro: 2 [MySQL][ODBC 3.51 Driver][mysqld-5.5.48]Incorrect date value: '-25672-167' for column 'INICIOVIG' at row 1 (0x80004005)
Erro: 3 [MySQL][ODBC 3.51 Driver][mysqld-5.5.48]Incorrect date value: '28188-172-' for column 'INICIOVIG' at row 1 (0x80004005)

Erros com campo tipo Date nulo

Screen Shot 03-21-16 at 08.47 AM.PNG
Screen Shot 03-21-16 at 08.47 AM.PNG (9.22 KiB) Visualizado 6715 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 14:22

Achei esse uso estranho.
Prefiro assim:

conn.Open
conn.Execute( "INSERT INTO tblClass ( clStudent, clClass, clPaid ) VALUES (  " + ;
   ValueSql( lStudentID ) + ", " + ValueSql( Dt ) + ", 0 )" )


Existe um limite de data no SQL padrão, por isso não pode ser data zerada.
Data zerada é substituída por "NULL" na linha de comando, mas não sei dessa forma que está usando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 14:28

E dependendo da base de dados, aceita '0000-00-00', não sei do Oracle.
Também é mais prático, pra não se preocupar com formato de data, ou "nacionalidade" da data.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 14:53

Quintas,

No MySql aceita data '0000-00-00' estou com a última versão fazendo testes.

Desta forma funciona:

cQuery:="INSERT INTO TESTE (CODIGO, DESCRICAO, DTCOBR) VALUES ('001', 'TESTE COM SQL', '0000-00-00')
oConnection:BeginTrans()
oConnection:Execute( cQuery )
oConnection:CommitTrans()


Com CreateParameter não está funcionando, aliás, tem situação que funciona, não sei o que é, pode ser até um bug
Com Createparameter não aceita a data '0000-00-00' na forma acima aceita ????
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 14:56

Quintas,

Olha só no HeidiSql a data zerada!

Screen Shot 03-21-16 at 02.55 PM.PNG
Screen Shot 03-21-16 at 02.55 PM.PNG (10.05 KiB) Visualizado 6703 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 15:01

Com CreateParameter() deve passar pelo ADO Microsoft.
E na Microsoft não existe data 0000-00-00
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 15:03

Quintas,

Não tem nada de estranho o uso com CreateParameter, você pode olhar a documentação aqui:
http://www.w3schools.com/asp/met_comm_createparameter.asp

O exemplo de uso tá no meu post.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 15:06

A minha string de conexão é esta, a não ser que tenha que usar outra.

cConexao := "DRIVER={MySQL ODBC 3.51 Driver};"
cConexao += "server=" + AllTrim(cServidor)
cConexao += ";database=" + AllTrim(cBanco)
cConexao += ";uid=" + AllTrim(cUsuario)
cConexao += ";pwd=" + AllTrim(cSenha)
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 15:19

Pessoal,

Tem como conectar ao MySql com provider, ao invès do conector ODBC?

Provider=MySQLProv;Location=ServerName;Data Source=mydb;User Id=myUsername;Password=myPassword;
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 15:24

Me chamou a atenção a sintaxe:

Set objparameter=objcommand.CreateParameter (name,type,direction,size,value) 


Está direcionado a VB, ASP, VBScript.

O MySQL aceita data zerada, mas o ADO não.

Por comando string, o ADO nem fica sabendo o que tem na string.
Faça uns testes isolados com cada campo pra ver o que acontece.
Como está usando diferente, vai ter que fazer testes.

De repente, checar o retorno de CreateParameter() pra ver se a função teve êxito.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 15:25

Se não me engano, esse provider fica desativado em 64 bits, e é o mesmo do ADS.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 15:27

Algum motivo especial pra complicar isso?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 16:48

Quintas,

Complicar é o meu lema, kkkk.

Eu queria saber como o HeidiSql se conecta com o MySql, usar provider, odbc, porque ele deixa editar um campo tipo date e permite informar '0000-00-00'

Eu segui o tutorial do Toledo para instalar o Mysql e o odbc, a algum tempo atrás eu instalei o oracle xe com provider oledb, com o mesmo programa que eu fiz usando createparameter com os bind '?' funcionou com data nula, a diferença é que no oracle não deixa colocar data '0000-00-00' é null mesmo.

Eu aproveitei o programa que fiz para fazer carga no oracle utilizando a mesma sintaxe.

Se não houver jeito, vou na forma tradicional como você postou.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor asimoes » 21 Mar 2016 18:06

Achei essa informação:

Table 5.2 Connector/ODBC Option Parameters

Só resta saber se isso resolve o problema com createparameter/bind

E como configurar

https://docs.oracle.com/cd/E17952_01/connector-odbc-en/connector-odbc-configuration-connection-parameters.html

Screen Shot 03-21-16 at 06.04 PM.PNG
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Tutorial de ADO

Mensagempor JoséQuintas » 21 Mar 2016 18:36

Pois é...
Usar 0000-00-00 no MySQL é ficar diferente do resto do mundo.... rs

E tem mais essa: a data mínima
Não significa apenas data vazia, mas existe a menor data possível.
Nunca olhei qual era essa data.

Atenção à versão do odbc. Aí diz 3.51.17
O mais atual, dessa sequência, é 3.51.30

Dependendo do comando SQL, as versões antigas geram erro.

Nota:
A 3.51.30 é a mais recente (recente = alguns anos atrás)
E leva o nome da Oracle.

oracle.png
oracle.png (3.23 KiB) Visualizado 6696 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 14 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro