MEDIATOR SQL campos Decimal

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

roh.drigo
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 19 Mar 2019 09:27
Localização: marilia/sp

MEDIATOR SQL campos Decimal

Mensagem por roh.drigo »

Quando faço a criação de uma tabela via MEDIATOR, o campo tipo Numérico está criando como Decimal no SQL, alguém já teve esse problema?
Estou usando Mediator V5.2.4 e o Mysql 5.5.
Um exemplo básico que já da esse problema.

Código: Selecionar todos

   aEstr:= {}  
   AADD( aEstr ,{"CODIGO"   ,'N(15)' ,  15,00,        ,"PRI" })
   AADD( aEstr ,{"NOME        ,'C(30)' ,  30,00,"utf8" })
   DBCREATE("TesteSimples", aEstr)
No SQL ele cria a tabela com o RECNO DECIMAL(10), IS_DELETED CHAR(1), CODIGO DECIMAL(15,0), NOME VARCHAR(30)
Editado pela última vez por Itamar M. Lins Jr. em 19 Jan 2025 21:17, em um total de 1 vez.
Razão: Movido do forum Harbour, temos este forum específico para banco de dados.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

MEDIATOR SQL campos Decimal

Mensagem por lucimauro »

Ola,
Aqui usando o mysql de boa com a versão do mediator

Código: Selecionar todos

  aadd(estru,{"codi","C",14,0})
  aadd(estru,{"nome","C",40,0})
  aadd(estru,{"quant","N",8,2})
  aadd(estru,{"unid","C",03,0})
roh.drigo
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 19 Mar 2019 09:27
Localização: marilia/sp

MEDIATOR SQL campos Decimal

Mensagem por roh.drigo »

Com decimal da certo sim, igual vc fez N,8,2 - Decimal(8,2). Só que quando é só Numerico (8) sem casa decimal ele cria no sql como Decimal(8,0)
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

MEDIATOR SQL campos Decimal

Mensagem por lucimauro »

Ola,

Vendo aqui realmente ele cria como decimal mais uso a muito tempo e isso nunca me trouxe problema.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

MEDIATOR SQL campos Decimal

Mensagem por Itamar M. Lins Jr. »

Olá!
Já tentou com inteiro mesmo ?
aadd(estru,{"inteiro","I",8,0})

O Harbour tem esses tipos:

Código: Selecionar todos

/I Integer 1, 2, 3, 4 or 8 Signed Integer ( Width : )" },;
    AADD(aMat,{"Int1","I",1,0})
    AADD(aMat,{"Int2","I",2,0})
    AADD(aMat,{"Int3","I",3,0})
    AADD(aMat,{"Int4","I",4,0})
    AADD(aMat,{"Int8","I",8,0})
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
roh.drigo
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 19 Mar 2019 09:27
Localização: marilia/sp

MEDIATOR SQL campos Decimal

Mensagem por roh.drigo »

Fiz os testes e realmente só cria com decimal, mas como já falaram que usam assim e não tem problema tudo bem, é que pretendo mudar pra sql mesmo sem o mediator depois, por isso queria que fosse inteiro já pra usar auto increment,mas obrigado.

Estou com um problema de usar o serviço automático do mediator, o medsvc32 -install, quando uso assim não funciona, agora se abro o mediator mesmo e do start ai sim funciona. Sabem o que pode ser?
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

MEDIATOR SQL campos Decimal

Mensagem por lucimauro »

Ola,
Depois do comando medsvc32 -install deve ser reiniciado o computador ai já deve funcionar , aqui faça assim a anos.
Voce também pode ver se quando mande reiniciar o Windows ele não esta parando o serviço iniciado pelo mediator32
roh.drigo
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 19 Mar 2019 09:27
Localização: marilia/sp

MEDIATOR SQL campos Decimal

Mensagem por roh.drigo »

Consegui descobrir o que era, eu tinha criado no ODBC a fonte dados pelo usuario por isso não estava funcionando, ai eu criei no DSN de Sistema.
Agradeço pelas informações
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

MEDIATOR SQL campos Decimal

Mensagem por lucimauro »

Qual versão do mediator esta usando, seria a versão free que suporta ate 100 acesso simultâneos usando o mysql?
roh.drigo
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 19 Mar 2019 09:27
Localização: marilia/sp

MEDIATOR SQL campos Decimal

Mensagem por roh.drigo »

Mediator é 5.2.4.0 free 100 users, o Mysql 5.7 e o OBDC 5.1
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

MEDIATOR SQL campos Decimal

Mensagem por lucimauro »

Ah Beleza!!
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

MEDIATOR SQL campos Decimal

Mensagem por paiva »

Boa tarde
pegando o BONDE andando.

para conveter os *.dbf para mysql existe um exe que faz isso ?

quando comprei/testei o RDD do XHB a uns 17 anos atraz, tenha um prg/exe que subia

quem sabe sabe acho um tempo para testar rs


Paiva
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

MEDIATOR SQL campos Decimal

Mensagem por JoséQuintas »

Existe. Chama-se programador.

Não entendo essas coisas.
O programador vai mexer no aplicativo inteiro, pra gravar no MySQL, milhares de rotinas.
Porque não faz também a rotina de cadastramento inicial que é só uma ?
É um ótimo teste para o que vai fazer depois.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

MEDIATOR SQL campos Decimal

Mensagem por Itamar M. Lins Jr. »

Olá!
Da pasta do Harbour /contrib/hbmysql
Arquivo /tests/dbf2mysql.prg

Código: Selecionar todos

/*
 * Converts a .dbf file into a MySQL table
 *
 * Copyright 2000 Maurilio Longo <maurilio.longo@libero.it>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file LICENSE.txt.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301 USA (or visit https://www.gnu.org/licenses/).
 *
 * As a special exception, the Harbour Project gives permission for
 * additional uses of the text contained in its release of Harbour.
 *
 * The exception is that, if you link the Harbour libraries with other
 * files to produce an executable, this does not by itself cause the
 * resulting executable to be covered by the GNU General Public License.
 * Your use of that executable is in no way restricted on account of
 * linking the Harbour library code into it.
 *
 * This exception does not however invalidate any other reasons why
 * the executable file might be covered by the GNU General Public License.
 *
 * This exception applies only to the code released by the Harbour
 * Project under the name Harbour.  If you copy code from other
 * Harbour Project or Free Software Foundation releases into a copy of
 * Harbour, as the General Public License permits, the exception does
 * not apply to the code that you add in this way.  To avoid misleading
 * anyone as to the status of such modified files, you must delete
 * this exception notice from them.
 *
 * If you write modifications of your own for Harbour, it is your choice
 * whether to permit this exception to apply to your modifications.
 * If you do not wish that, delete this exception notice.
 *
 */

#require "hbmysql"

#include "inkey.ch"

PROCEDURE Main( ... )

   LOCAL cTok
   LOCAL cHostName := "localhost"
   LOCAL cUser := "root"
   LOCAL cPassWord := ""
   LOCAL cDataBase, cTable, cFile
   LOCAL aDbfStruct, i
   LOCAL lCreateTable := .F.
   LOCAL oServer, oTable, oRecord

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

   // At present time (2000-10-23) DBFCDX is default RDD and DBFNTX is
   // now DBF (I mean the one able to handle .dbt-s :-))
   rddSetDefault( "DBF" )

   IF PCount() < 6
      help()
      QUIT
   ENDIF

   i := 1
   // Scan parameters and setup workings
   DO WHILE i <= PCount()

      cTok := hb_PValue( i++ )

      DO CASE
      CASE cTok == "-h"
         cHostName := hb_PValue( i++ )

      CASE cTok == "-d"
         cDataBase := hb_PValue( i++ )

      CASE cTok == "-t"
         cTable := hb_PValue( i++ )

      CASE cTok == "-f"
         cFile := hb_PValue( i++ )

      CASE cTok == "-u"
         cUser := hb_PValue( i++ )

      CASE cTok == "-p"
         cPassWord := hb_PValue( i++ )

      CASE cTok == "-c"
         lCreateTable := .T.

      OTHERWISE
         help()
         QUIT
      ENDCASE
   ENDDO

   dbUseArea( .T.,, cFile, "dbffile",, .T. )
   aDbfStruct := dbffile->( dbStruct() )

   oServer := TMySQLServer():New( cHostName, cUser, cPassWord )
   IF oServer:NetErr()
      ? oServer:Error()
      QUIT
   ENDIF

   oServer:SelectDB( cDataBase )
   IF oServer:NetErr()
      ? oServer:Error()
      QUIT
   ENDIF

   IF lCreateTable
      IF hb_AScan( oServer:ListTables(), cTable,,, .T. ) > 0
         oServer:DeleteTable( cTable )
         IF oServer:NetErr()
            ? oServer:Error()
            QUIT
         ENDIF
      ENDIF
      oServer:CreateTable( cTable, aDbfStruct )
      IF oServer:NetErr()
         ? oServer:Error()
         QUIT
      ENDIF
   ENDIF

   // Initialize MySQL table
   oTable := oServer:Query( "SELECT * FROM " + cTable + " LIMIT 1" )
   IF oTable:NetErr()
      Alert( oTable:Error() )
      QUIT
   ENDIF

   DO WHILE ! dbffile->( Eof() ) .AND. Inkey() != K_ESC

      oRecord := oTable:GetBlankRow()

      FOR i := 1 TO dbffile->( FCount() )
         oRecord:FieldPut( i, dbffile->( FieldGet( i ) ) )
      NEXT

      oTable:Append( oRecord )
      IF oTable:NetErr()
         Alert( oTable:Error() )
      ENDIF

      dbffile->( dbSkip() )

      DevPos( Row(), 1 )
      IF ( dbffile->( RecNo() ) % 100 ) == 0
         DevOut( "imported recs: " + hb_ntos( dbffile->( RecNo() ) ) )
      ENDIF
   ENDDO

   dbffile->( dbCloseArea() )
   oTable:Destroy()
   oServer:Destroy()

   RETURN

PROCEDURE Help()

   ? "dbf2MySQL - dbf file to MySQL table conversion utility"
   ? "-h hostname (default: localhost)"
   ? "-u user (default: root)"
   ? "-p password (default no password)"
   ? "-d name of database to use"
   ? "-t name of table to add records to"
   ? "-c delete existing table and create a new one"
   ? "-f name of .dbf file to import"
   ? "all parameters but -h -u -p -c are mandatory"
   ? ""

   RETURN
Depois pode usar ele mesmo ou ADO/SQLMIX...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder