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

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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) Exibido 11901 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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

Achei esse uso estranho.
Prefiro assim:

Código: Selecionar todos

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 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

Quintas,

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

Desta forma funciona:

Código: Selecionar todos

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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) Exibido 11889 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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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_c ... ameter.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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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

Código: Selecionar todos

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

Me chamou a atenção a sintaxe:

Código: Selecionar todos

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 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

Algum motivo especial pra complicar 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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Tutorial de ADO

Mensagem por asimoes »

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/co ... eters.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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tutorial de ADO

Mensagem por JoséQuintas »

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) Exibido 11882 vezes
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/
Responder