Ir al contenido


Foto

Diferencias access_MySql


  • Por favor identifícate para responder
13 respuestas en este tema

#1 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 mayo 2010 - 08:39

Hola
La primera y creo que mas dificil:

Access:


sql
  1. SELECT IIf([TipoTransac]="FA","Factura","Nota Débito") AS Documento, CxCobrar.CodTransac,
  2. CxCobrar.FechaTransac, CxCobrar.CodCliente, Clientes.NombreCliente, Clientes.DiasCredito,
  3. Clientes.LimiteCredito, CxCobrar.Balance, CxCobrar.PagosRec, [Balance]-[PagosRec] AS Saldo, DATE()-CxCobrar!FechaTransac ASAS
  4. FROM Clientes RIGHT JOIN CxCobrar ON Clientes.CodCliente = CxCobrar.CodCliente
  5. WHERE (((CxCobrar.CodCliente)=[PRI]) AND (([Balance]-[PagosRec])>0) AND ((CxCobrar.TipoTransac)="FA" OR (CxCobrar.TipoTransac)="ND"))
  6. ORDER BY CxCobrar.CodCliente, CxCobrar.OrdTrans;



MySql: (no me sale) :


sql
  1. SELECT CASE WHEN TipoTransac ="FA" THEN "Factura" ELSE "Nota Débito" END AS Documento, CxCobrar.CodTransac, CxCobrar.FechaTransac, CxCobrar.CodCliente,
  2. Clientes.NombreCliente, Clientes.DiasCredito, Clientes.LimiteCredito, CxCobrar.Balance,
  3. CxCobrar.PagosRec, (Balance)-(PagosRec) AS Saldo, CURDATE()-CxCobrar.FechaTransac ASAS
  4. FROM Clientes RIGHT JOIN CxCobrar ON Clientes.CodCliente = CxCobrar.CodCliente
  5. WHERE CxCobrar.CodCliente =:PRI AND (((Balance) - (PagosRec) >0 ))
  6. AND CxCobrar.TipoTransac = "FA" OR CxCobrar.TipoTransac = "ND"
  7. ORDER BY CxCobrar.CodCliente, CxCobrar.OrdTrans;



Me sale error despues del parametro PRI., osea toda la parte where.....
Se aceptan sugerencias. : : 8o|
Saludos
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.283 mensajes
  • LocationMéxico

Escrito 18 mayo 2010 - 09:00

A ver amigo, intenta con esto



sql
  1. WHERE ( CxCobrar.CodCliente = :PRI AND (Balance - PagosRec) > 0 AND CxCobrar.TipoTransac = 'FA' )
  2.   OR CxCobrar.TipoTransac = 'ND'



Salud OS
  • 0

#3 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 mayo 2010 - 09:10

Hola
No va amigo, el mismo error
Saludos
  • 0

#4 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 18 mayo 2010 - 09:30

Hola
Primera prueba superada:


sql
  1. SELECT CASE WHEN TipoTransac ="FA" THEN "Factura" ELSE "Nota Débito" END AS Documento, CxCobrar.CodTransac, CxCobrar.FechaTransac, CxCobrar.CodCliente,
  2. Clientes.NombreCliente, Clientes.DiasCredito, Clientes.LimiteCredito, CxCobrar.Balance,
  3. CxCobrar.PagosRec, (Balance)-(PagosRec) AS Saldo, CURDATE()-CxCobrar.FechaTransac ASAS
  4. FROM Clientes RIGHT JOIN CxCobrar ON Clientes.CodCliente = CxCobrar.CodCliente
  5. WHERE CxCobrar.CodCliente = 1 AND (Balance - PagosRec) > 0 AND CxCobrar.TipoTransac = "FA"
  6. OR CxCobrar.TipoTransac = "ND"
  7. ORDER BY CxCobrar.CodCliente, CxCobrar.OrdTrans;


En delphi los parametros se pueden colocar, en el manejador que uso MySql_Front, los parametros dan error.
Estas sentencias las ejecuto ahi para comprobar problemas, no es perfecto pero me va dando ideas.

Esta primera prueba superada, por el momento, con solo quitar el parametro funciono.
Saludos
  • 0

#5 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 mayo 2010 - 08:11

Hola, a ver se entiendo.
¿En realidad la consulta con el parámetro si funciona en Delphi?
¿Entonces es el "manejador" que comentas el que tiene el problema?

No estoy bien familiarizado con MySQL pero algo de lo que pude informarme es que existen diferentes motores para MySQL... dependiendo de cual se elija hay cosas que se pueden o no hacer.
Quizá eso sea el problema... creo recordar que en en la DDL de la base de datos se indica el motor... fíjate debe haber una línea como esta:



sql
  1. engine = ....



O como esta:



sql
  1. TYPE = ....



Allí se indica que tipo de motor emplear. Si nos puedes pasar el dato podríamos ver si algo de eso tiene que ver.

EDITO:
Aquí hay algo de lo que digo.

Saludos,
  • 0

#6 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 19 mayo 2010 - 09:31

Hola
Buena pregunta amigo, lo revisare cuando sepa como jejeje.
Saludos
  • 0

#7 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 mayo 2010 - 11:29

¡Allí está!,.... allí está lo malo: ¡Yo tampoco se! :D

No tengo las herramientas que estás usando. Fíjate si entre las opciones, menú, o lo que fuese no hay algo como: "extract metadata", "extract DDL", "View Table" o algo parecido... Sería difícil de creer que no tenga algún función que permita ver el script .sql que se genera para crear la base de datos. Si puedes ver las propiedades o configuración de la tabla y/o base de datos seguramente allí tiene algo que indique el type o engine.

Saludos,
  • 0

#8 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 19 mayo 2010 - 11:30

Hola
Para pasar los datos lo hice creando un scrip, a eso te refieres?.
Saludos
  • 0

#9 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 19 mayo 2010 - 11:37

Hola
Este es el Scrip que hice para pasar los datos:

# Dump File
#
# Database is ported from MS Access
#--------------------------------------------------------
# Program Version 3.0.131

CREATE DATABASE IF NOT EXISTS `Prod`;
USE `Prod`;

#
# Table structure for table 'Usuarios'
#

DROP TABLE IF EXISTS `Usuarios`;

CREATE TABLE `Usuarios` (
  `CodUsuario` VARCHAR(15) NOT NULL,
  `Nombre` VARCHAR(50),
  `Clave` VARCHAR(15),
  `Graficar` TINYINT(1) DEFAULT 0,
  `B1` VARCHAR(1),
  PRIMARY KEY (`CodUsuario`)
) ENGINE=innodb DEFAULT CHARSET=utf8;

SET autocommit=1;

#
# Dumping data for table 'Usuarios'
#

INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('acabado', 'Usuario de Acabado', 'acab', 0, '3');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('acrilico', 'Usuario de acrilico', 'acri', 0, '3');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('bodega', 'Bodega', '1234', 1, '3');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('carlos', 'Don Carlos Gutierrez', 'nati1', 1, '1');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('facturado', 'facturacion', 'fact', 0, '3');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('manuel', 'Manuel Martinez', '1234', 0, '4');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('produccion', 'Usuario de Producción', 'prod', 0, '3');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('Victor', 'Victor soto', '123', 0, '5');
INSERT INTO `Usuarios` (`CodUsuario`, `Nombre`, `Clave`, `Graficar`, `B1`) VALUES ('Wendy', 'Wendy Leon Soto', '2802', 0, '5');
# 9 records

Asi me funciono en MYSQL ojala pudiera ser en Firebird.
Saludos
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 mayo 2010 - 11:55

Exacto amigo, a eso mismo me refería (y)

De lo que veo el engine está definido en innodb, que supuestamente es el modo transaccional (supuestamente el modo más compatible con Firebird y seguro. Si hubiera algún conflicto referencial estaría protestando) y el charset es UTF8.

Fíjate si entre las propiedades de la base de datos de Firebird (con IBExpert) si está activo este charset... quizá eso sea parte del problema ;)

Saludos,
  • 0

#11 Caral

Caral

    Advanced Member

  • Administrador
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 19 mayo 2010 - 12:05

Hola
Estaba tratando de correr el scrip en el ibexpert pero me da errores.
No acepta el If y otras cosas.
Saludos
  • 0

#12 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 19 mayo 2010 - 12:15

Es que ese script está definido para MySQL... habría que hacer algunos cambios para adaptarlo a Firebird.

Estoy investigando algunas cosas... me temo, que los problemas se debe a una combinación de muchas cosas.

Sobre el tema de las consultas habría que ver una por una... y adaptarlas, es posible que en esto habrá que hecharlo a mano. Lo digo por el IFF, entre otras particularidades.

¿Nos puedes acercar una copia del archivo para ver?
  • 0

#13 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 758 mensajes
  • LocationPinar del Río, Cuba

Escrito 27 mayo 2010 - 06:19

Una pregunta por curiosidad, pues soy un poco novato con MySQL
Por qué son los : delante de PRI?  (:PRI)
Significan algo?
  • 0

#14 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 27 mayo 2010 - 06:33

Una pregunta por curiosidad, pues soy un poco novato con MySQL
Por qué son los : delante de PRI?  (:PRI)
Significan algo?


Saludos.

Eso significa que son parámetros para ser reemplazables al momento de lanzar la sentencia, esto si no me equivoco, es un estándar para definir parámetros.
  • 0