Autor Tema: Problema en Consulta al utilizar el MySql  (Leído 12682 veces)

0 Usuarios y 1 Visitante están viendo este tema.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #15 en: Enero 07, 2015, 02:15:43 am »
Si lo has venido usando la verdad no creo que halla algún riesgo, creo entonces que en los servidores web ya han configurado para que de forma predeterminada se realice la desconexión pasado X segundos (que era lo que me pasaba) y quizá lo mismo pasa con el autocommit. Es lo único que se me ocurre por lo cual no se te interrumpe la conexión en un entorno LAN.
Ya te iba a preguntar si usas transacciones pero ya estaría desviando mucho el hilo asi que te escribo en mp.

Esperando la venia de Bazzoka
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #16 en: Enero 07, 2015, 07:21:40 am »
Muchas gracias a todos me han servido de mucho este hilo para aprender de sus experiencias.
Asi que me pondre a optimizar mi codigo para que solo habra en un solo lugar y ver si se me terminan esos errores que me viene dando.

Como les comente tengo una const Bolleana configurada a Nivel Global que si decido que trabaje con Mysql la activo y sino lo hace con Access.
Con Aceess me va todo perfecto pero vere si se solucionan estos tragos amargos con el mysql por que me interesa crear un hibrido en BD.

Saludos
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #17 en: Enero 07, 2015, 09:46:48 am »
Muchas gracias muchachos me sirvio mucho lo que aportaron en este hilo y de echo ahora solo abro una vez la base de datos y la cierro al final!!!

Hasta ahora vengo bien solo estoy teniendo este error al intentar eliminar registros :


y este es el codigo en cuestion ?
Código: [Seleccionar]
BORRAR_ACTUAL "DELETE * FROM t_Usuarios WHERE Userid ='" & ID_ACTUAL(Index) & "' ;" 'ID_ACTUAL(Index)= "USR-001"

Public Sub BORRAR_ACTUAL(sql As String)
    On Error GoTo ErrorBorrar
    Dim rsRef  As New Recordset
 
    rsRef.Open sql, DB, adOpenKeyset, adLockOptimistic, adCmdText
   
    EXITO = True
    Set rsRef = Nothing

ErrorBorrar:

    If Err.Number <> 0 Then
        MsgBox "Error: " & Err.Number & " - " & Err.Description
    End If

End Sub
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #18 en: Enero 07, 2015, 10:47:05 am »
No creo que lo que comentaré sea la solución al error, pero te voy a hacer unas observaciones.
¿Estás usando ADO? Porque si es así, la declaración de la variable para el recordset la uso así:
Código: (VB) [Seleccionar]
Dim rsRef AS ADODB.Recordset
Set rsRef = New ADODB.Recordset
rsRef.CursorLocation = AdUseClient

Por otro lado, solo abro un recordset cuando voy a leer datos. Si voy a insertar, modificar (update) o eliminar, lo hago directamente sobre la conexión:
Código: (VB) [Seleccionar]
DB.Execute "Insert INTO ..."
DB.Execute "DELETE * FROM..."
DB.Execute "UPDATE ..."

Fijate si te queda mejor así.

Jerónimo

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #19 en: Enero 07, 2015, 10:49:12 am »
Yván: concuerdo con vos.
Ahora leo tu mp.

Jerónimo

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #20 en: Enero 07, 2015, 11:06:01 am »
lo tengo configurado asi!
en un modulo

Public DB      As New ADODB.Connection
Public rsRef   As Recordset
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #21 en: Enero 07, 2015, 12:19:14 pm »
creo que el DELETE * es solo para Access, para MySQL es directemente DELETE FROM tabla

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #22 en: Enero 07, 2015, 04:57:09 pm »
creo que el DELETE * es solo para Access, para MySQL es directemente DELETE FROM tabla

GENIAL WALDO !!!

ASI ES EL * (P--- ASTERISCO) habia que quitar !!

GRaciasssssssss!!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Luffy

  • Kilobyte
  • **
  • Mensajes: 90
  • Reputación: +4/-2
  • Desarrollar es el arte de crecer no de crear.
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #23 en: Enero 07, 2015, 06:42:05 pm »
Bueno mi opinión ya que la has pedido es esta.

Tenemos que tener cuidado cuando vallamos a escoger el tipo de bases de datos que deseamos utilizar por que pasan cosas como estas. MySQL es un motor bastante robusto para bases de datos pero no es Oracle, aunque son de la misma casa comercial Oracle es superior sin lugar a dudas.

1.- Cliente/Servidor

Tenemos en cuenta que MySQL es una base de datos primeramente Cliente/Servidor. Lo que significa que siempre vamos a tener un cliente y un servidor aunque esto signifique que estén en la misma computadora o terminal (En Caso de los dispositivos móviles). Para lo que vamos a tener una cuenta de ROOT y una cliente, muchísimos programadores piensan que es bueno tener la misma cuenta en su cadena de conexión a la base de datos. Es sorprendente, mas del 90% de los desabolladores de perfil bajo y medio tienen la misma cuenta en el servidor y en la cadena de conexión. Esto es un agravioso error. Ya que como lo han de saber si abren su ejecutable con el bloc de notas pueden tener acceso a la cadena de conexión del sistema y muchas formas mas de obtenerlo, osea alguien que sepa principios de ingeniería inversa básica lo hace. Por lo tanto un software se protege en función a lo que es más importante para el, por lo tanto cuando se trata de GESTIÓN DE DATOS (Bases de Datos con Software) se protege más la base de datos que el software.

Como haces esto, bueno te resultará curioso saber que MySQL puede hacer esto por ti si lo sabes configurar, osea las cuentas de usuarios no están de por gusto, MySQL guarda en su LOG si así lo configuras todos los accesos de los usuarios desde donde y cuando. Por lo que significa que deberías tomarte la molestia de crear Usuarios y Privilegios apropiados para tu cliente. Esto sin contar que significa en una pastita más para el desarrollador de vez en cuando el cliente quiera una nueva cuenta. Los mejores sistemas del mundo venden su sistema y cuentas de usuario, por que trabajan en la seguridad de sus aplicaciones.

Un ejemplo digamos que tengo un software local en una empresa que esta tiene 25 trabajadores en 5 departamentos de los cuales en cada departamento hay un administrador o encargado, por lo tanto cuantas ¿cuantas de usuario configuro?. R// Es sencillo, configuras 11 cuentas de usuario, 1 General, 5 para cada uno de los jefes de departamento, 1 cuenta por departamento de usuario final con privilegios limitados osea 5 usuarios finales. En jerarquía con sus privilegios, sin contar con el usuario ROOT por supuesto.

¿Para qué me va a servir esto?. R// Como ya lo explique MySQL si lo configuras guarda que hizo cada usuario en que dirección ip, ejemplo, UsuarioFinalContabilidad en IP 192.168.1.5 utilizo la sentencia "DELETE * FROM" para todos los registros de la compañía. Esto te quita mucho trabajo, realmente por que las empresas quieren saber que hizo que cosa. También tienes que tener en cuenta que la configuración de los privilegios contiene el acceso a tablas, que los usuarios solo utilicen las tablas que realmente tienen que utilizar y nada más. Imagina que alguien utilizo ingeniería inversa para saber tu ConnectionString pero solo tiene acceso a modificar las tablas en las que el trabaja y no puede ver los contenidos de las demás tablas, el motor se va a dar cuenta de la conexión mal influenciada y te va a informar.

2.- MySQL Como Base de Datos Transaccional o No

La verdad es que este es un tema muy pero muy delicado, ya que aquí se centra tu pregunta, lo de la transacción de bases de datos o la forma en la que en General se dice que es correcto tratar con los datos de:

En un Sub
  • Abrir la Base de Datos
  • Ejecutar la Consulta SQL
  • Cerrar la Base de Datos

Es el resultado de las http://es.wikipedia.org/wiki/ACID que en un razonamiento de sentido común te dice que tenes la necesidad de Abrir la conexión, ejecutar tu código, cerrar la conexión, para GARANTIZAR los cambios hechos en la base de datos por motivos transaccionales, al cumplir con esto estas realizando un sistema un SGBD http://es.wikipedia.org/wiki/Transacci%C3%B3n_%28base_de_datos%29 esto significa que lo que haces es utlizar las propiedades de BEGIN, COMMIT y ROLLBACK. Esto debe de ser configurado con el tipo de base de datos InnoDB, osea no es necesario que manejes estas propiedades de código fuente en tu sistema por que MySQL en InnoDB ya lo hace automáticamente con cada transacción.

Si no quieres utilizar esta parte automática de MySQL en InnoDB debes de desactivarla pero eso es absurdo, ya que MySQL tiene su propia base de datos más rápida para no tener estas propiedades osea MyISAM pero tambien tienes que desactivar las transacciones.

Si mantienes tu "HILO" de bases de datos abierto desde que inicia hasta que finaliza corres el riesgo de esto no se cumpla y que pueda suceder un desbordamiento, un problema de actualización, perdidas indeseadas, etc. MySQL habla mucho al respecto de esto, de tal manera que ha hecho por defecto InnoDB desde MySQL Server 5.0

Recuerda es comprometerte a que la acción o transacción este bien hecha, una por una, no todas al mismo tiempo que te obliga literalmente a manejar las transacciones por código fuente, que es más peligroso. Tambien ten en cuenta que no son los únicos tipos de bases de datos que maneja MySQL, tiene varios más y se van acoplando a tus necesidades como desarrollador y a las necesidades de tus clientes. Esto hace a MySQL posiblemente la mejor herramienta para bases de datos de hosting, es verdaderamente configurable, lee y aprende que tipo de bases de datos necesitas.

Vi a Ivan Acosta mencionar algo de quitar el autocommit, creo que debería de ver también los tipos de bases de datos que tiene MySQL (Comentario Personal) Yo he trabajado con varios Motores de Bases de Datos y MySQL me ha parecido mas manejable.

3.- Sintaxys

Debes de tener en cuenta que la sintaxys de una base de datos Mono/Multi Usuario como access que quiere asemejarse más al motor de SQL Server utilizando así su composición en sus cadenas, no es lo mismo que utilizar SQL, lo cual puedes utilizarlo en un Motor de Bases de Datos Cliente Servidor Transaccional. Te sugiero que en vez de Access utilices SQLite. Te dejo una página donde puedes aprender y practicar Lenguaje SQL. http://www.w3schools.com/ (Pido Disculpas a los Moderadores por el SPAM)

Te vas al apartado Server Side y la opción Learn SQL.

4.- Desarrollo del Aplicativo y Desarrollo de la Base de Datos.

Hay también un gran problema con este tema por que al desarrollador que se ocupa de hacer Sistemas de Gestión de Bases de Datos (SGBD) debe de saber básicamente 2 lenguajes de programación.

  • El Lenguaje del Código Fuente (Vb6, Vb.NET, C, C++, etc.)
  • El Lenguaje de Bases de Datos

Lo digo de verdad aquí hay verdaderos genios para utilizar el código fuente a un muy buen porcentaje. Pero en muchos casos (No estoy diciendo nombres y ni tan siquiera que pertenezcan a esta web) no le sacan el potencial a su motor de bases de datos, no a la base de datos si no al motor. Por ejemplo un programador que está guardando una factura de venta debe de guardar solamente los datos de la factura con el monto y el detalle de dicha factura. Los Descargos del inventario, las creación de cuentas contables, etc. deben de hacerse de forma automatica.

Esto nos lleva a las siguientes herramientas de MySQL:

  • Store Procedures
  • Triggers
  • Event Scheduler
  • Views

Con el buen uso de estas herramientas podemos minimizar el código fuente en nuestro aplicativo, aumentar el código en nuestra base de datos, pero ahorrar tiempo y dejar de gastar recurso innecesario.


Resumen

En mi humilde opinión con mi estudio y experiencia.

Si no has tenido problemas con tus bases de datos es por que son tan pequeñas que no has llegado hay, espera a que crezcas de verdad.
Debes de Manejar MySQL como debe de ser para sacar su máximo potencial, no lo estas haciendo.
Debes de aprender a configurar bien tu motor de base de datos.
Deberías de pensar en cambiar de Access a SQLite si quieres tener un respaldo de la base de datos en otro motor, por que si lo que quieres es tener un respaldo hay otras formas.
Si vas a seguir manejando Access debes de separar la sintaxis de Access y SQL de MySQL.

Espero no haber molestado a nadie ni mucho menos insultado, si es así me disculpo, si hay algún error con respecto a algo que mencione aquí, puede corregidme abiertamente sin mp y se debate y discute, si estoy equivocado estaré mas que encantado en aprender y corregir mis conocimientos.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #24 en: Enero 07, 2015, 07:37:22 pm »
Muy buena y acertada explicación. Como aporte y dependiendo de que tanto escalara el proyecto se debe decidir entre que y que motor. Aqui una pequeña comparativa que quizá ayude en esa elección.

Quizá solo agregue como alternativa a Access el uso de Firebird Embebed (No superserver ni classic) para ser usado como monousuario y que no requiere siquiera instalación pero que ofrece toda la potencia de este motor C/S así se use como monousuario, gozando del uso de triggers, sp, ,views, udf, dominios, etc, cabiendo la posibilidad de que el proyecto escale y no habría que hacer migración alguna para trabajarlo incluso en grandes redes.
Tampoco soy fanático y por ello diré que lo malo de Firebird es que no hay hostings webs que sean realmente interesantes que usen Firebird ¿porque? porque llegaron tarde (punto para MySQL), al menos yo no he encontrado ninguno sino ya sabrían cual hubiera sido mi elección  :-).

El esquema de manejo de usuario en la BD quizá también depende de la dimensión del proyecto, para proyectos pequeños de pronto basta controlarlo en el aplicativo, todo depende, es cuestión de ver de que proyecto hablamos, hay proyectos pequeños y rentables que por su costo ni vale la pena siquiera hacerle ingeniería inversa y que finalmente un poco de ofuscación ayuda. En proyectos medianos y grandes si vendría a ser necesarios, es mas, esto a veces es parte de la negociación de licencias porque se hacen por usuario,  por ejemplo el ERP AX y NAV las licencias se negocian por usuarios recurrentes, mas usuarios mas costo, pero bueno ya es otro rollo.

Vi a Ivan Acosta mencionar algo de quitar el autocommit, creo que debería de ver también los tipos de bases de datos que tiene MySQL (Comentario Personal) Yo he trabajado con varios Motores de Bases de Datos y MySQL me ha parecido mas manejable.
No trabajo con MySQL, es mas, no tengo ningún proyecto con el y ahora solo lo estoy usando para validar licencias por internet de un soft que hice y estoy tocando MySQL porque no me queda de otra ya que mi hosting solo usa MySQL (como la mayoría de hostings), por ello recién me enteré de los sabores de engines (MyISAM y InnoDB) y las pre-configuración que le hicieron al motor en el hosting, termino ese desarrollito y no creo que use MySQL sobretodo porque estoy en otros temas cerrados y también temas ajenos al mundo informático pero definitivamente MySQL es un motor sobresaliente ni que decir.


Por lo demás celebro y agradezco todo el aporte que has dado en este hilo amigo Luffy.

+1
Me encuentras en YAcosta.com

Luffy

  • Kilobyte
  • **
  • Mensajes: 90
  • Reputación: +4/-2
  • Desarrollar es el arte de crecer no de crear.
    • Ver Perfil
Re:Problema en Consulta al utilizar el MySql
« Respuesta #25 en: Enero 07, 2015, 07:51:49 pm »

No trabajo con MySQL, es mas, no tengo ningún proyecto con el y ahora solo lo estoy usando para validar licencias por internet de un soft que hice y estoy tocando MySQL porque no me queda de otra ya que mi hosting solo usa MySQL (como la mayoría de hostings), por ello recién me enteré de los sabores de engines (MyISAM y InnoDB) y las pre-configuración que le hicieron al motor en el hosting, termino ese desarrollito y no creo que use MySQL sobretodo porque estoy en otros temas cerrados y también temas ajenos al mundo informático pero definitivamente MySQL es un motor sobresaliente ni que decir.


Muy buenas YAcosta, pues me centre en MySQL por que de este motor se trataba la pregunta específicamente, yo también utilizo firebird y tiene muchas ventajas, así como tambien las tiene MySQL. Con respecto a los Hosting que no tienen firebird, existe la forma de instalar en el cpanel y en tu hosting el Firebird y existen hosting solamente del motor de Firebird uno y muy bueno: https://www.inspirohost.com. Aunque mi opción preferida siempre ha sido tener una ip pública y hacer mi hosting propio y solo comprar el dominio.

Otro comentario personal. Muchas Gracias por responder.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Problema en Consulta al utilizar el MySql
« Respuesta #26 en: Enero 07, 2015, 08:18:28 pm »
GUAU!!!

Es mucho para mi esto!!

Agradezco enormemente una explicación de tal magnitud y me he tomado el trabajo de leerla atentamente y sacarle el mayor provecho posible.

Cuando digo que es mucho para mi es porque sólo un programador (yo sólo me di el titulo) independiente y autodidacta ya que jamas fui a ningun sitio (instituto, universidad , etc) asi que todo lo que he aprendido fue a los ponchasos literalmente y de puro constante que soy.

Si bien hoy vivo de esta profesión solo un par de mis aplicaciones utilizan base de datos y muy pequeñas ya que no son empresariales.

Y para terminar este hilo lo he creado por que se me ocurrio nada probar el MySql como alternatiba para esta aplicacion en la que trabajo pueda trabajar a futuro con una BD en la nube.

Gracias por tomarse el tiempo de tratar de dejar lo mejor de cada uno en este excelente Foro que siempre me ha ayudado.

MAE
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problema en Consulta al utilizar el MySql
« Respuesta #27 en: Enero 07, 2015, 08:21:06 pm »
Muy buenas YAcosta, pues me centre en MySQL por que de este motor se trataba la pregunta específicamente, yo también utilizo firebird y tiene muchas ventajas, así como tambien las tiene MySQL. Con respecto a los Hosting que no tienen firebird, existe la forma de instalar en el cpanel y en tu hosting el Firebird y existen hosting solamente del motor de Firebird uno y muy bueno: https://www.inspirohost.com. Aunque mi opción preferida siempre ha sido tener una ip pública y hacer mi hosting propio y solo comprar el dominio.

Otro comentario personal. Muchas Gracias por responder.
A caramba doc, buen dato, no sabia que se podía configurar el Cpanel para instalar Firebird,  eso esta muy interesante para un nuevo hilo, voy a ir investigando sobre ello. Y voy a checar el enlace que me alcanzas.

En mi caso bueno no tengo un esquema de negocio que me exija implementar en casa un hosting (ademas de asumir algunas responsabilidades), sin embargo me seduce mucho eso, tengo dominios sueltos, tengo DynDNS con lo cual se podria obviar el ip fijo y publico.... es muy interesante.

Muchas gracias por los datos Doc.
Me encuentras en YAcosta.com