Jump to content

asesorcperic

Members
  • Content Count

    222
  • Joined

  • Last visited

  • Days Won

    3

asesorcperic last won the day on March 30 2015

asesorcperic had the most liked content!

About asesorcperic

  • Rank
    Advanced Member
  • Birthday 09/03/1979

Contact Methods

  • Website URL
    http://www.solucionesber.com.mx/

Converted

  • Campos
    ,

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. antes que nada necesitas el Driver ODBC de Mysql instalado la conexion la puedes hacer asi Set Bd = New ADODB.Connection Bd.ConnectionString = "driver={MySQL ODBC 3.51 Driver};" & _ "Server=localhost";" & _ "Port=3306;" & _ "Database=base;" & _ "User=user;" & _ "Password=pswd;" & _ "Option=3;" y la consulta asi Dim rs As New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open "SELECT * FROM BASE", Bd, adOpenStatic, adLockOptimistic, adCmdText Ahora ya haces con el recordeset lo que necesites
  2. Hola asi es si utilizas Mysql debes instalar el driver correspodiente en cada maquina
  3. osea que si era el servicio? bueno Hermano [uSER=98799]@Enigma25[/uSER] sin el afan de debatir de cual motor es el mejor ya que esto es como el futbol la politica o la religión , por que no te inclinaste por otro motor donde no tengas limitaciones digo, no se cual sea una de las limitaciones en la version express que tienes pero rondaba en 10 gb el pesos de la base si no mal recuerdo, si alguna vez te decides a probar otro motor te recomendaria apliamente mysql o firebird ambos son grandes y lo mejor sin limitaciones saludos y felicidades hermano
  4. Hola [uSER=98799]@Enigma25[/uSER] gusto en saludarte como te comentan en cuestion de las fechas solo es el formato debes checar ya que dependiendo del motor cambia, en cuestion del error no te puedo ayudar ya que nunca ha sido para mi ojo para mi santo de mi devoción sql server me he inclinado por otros motores pero puedes checar si a lo mejor el servicio del servidor fue detenido, pero felicidades por ese brinco que diste te felicito
  5. hola [uSER=128777]@javihng123[/uSER] vamos por partes primero si tienes que instalar el driver si quieres utilizar la conexion directa de vba aqui un ejemplo Public BdMysql As ADODB.Connection Public Sub Conexion_Mysql() On Error GoTo Ver Set BdMysql = New ADODB.Connection BdMysql.ConnectionString = "driver={MySQL ODBC 3.51 Driver};" & _ "Server=69.167.136.79;" & _ "Port=3306;" & _ "Database=soluc107_bbasic;" & _ "User=root;" & _ "Password=root;" & _ "Option=3;" BdMysql.Open Exit Sub Ver: MsgBox "Nº de error: " & Err.Number & " | " & Err.Description, vbCritical, "Control de errores" Err.Clear End Sub [/CODE] ojo si a la hora realizar un ABM (alta, baja o modificación) afectas mas de dos tablas es recomendable utilizar transacciones para que cumplas con el ACID ojo mysql solo acepta transacciones si tus tablas son innoDB por que MyISAM no las soporta, ahora si si son innoDB y utilizas transacciones tienes que deshabilitar el autocommit que trae mysql por default [CODE] On Error GoTo ErrorHandler With Local_Mysql .Execute "SET AUTOCOMMIT=0", adCmdText ' Desactiva el auto commit de mysql .Execute "BEGIN", adCmdText 'Inicia La Transaccion mysql .Execute strSql, adCmdText 'Comando Sql .Execute "COMMIT", adCmdText 'Confirma la Transaccion Sql End With Exit Function ErrorHandler: Local_Mysql.Execute "ROLLBACK", adCmdText ' Retorna la Transaccion en caso de error [/CODE] ahora en este tipo de transacciones es bueno abrir y cerrar la conexión por cada procedimiento....... ahora te comento si es posible agregar a tu base de datos mysql en un servidor desde vba sin necesidad de utilizar el driver ojo pero aqui utilizarias como intermediario un archivo php que se alojaria en el servidor es algo sencillisimo y que es facil de implementar saludos
  6. aqui lo tienes https://mega.nz/#!a81xmCLJ!1fxz9daPyrZgrRpbBH2kaEQmNkz-wS0m5iMZuGQDa1g solo agrega la referencia Microsof Scripting Runtime esto sirve normalmentet vb6 cuando el proyecto esta copilado y se necesita saber la linea exacta del error ojo todas las lineas se tienen que enumerar saludos
  7. Hola [uSER=191714]@José_Santos[/uSER] muy buenos tus aportes y concuerdo contigo en
  8. que bueno amigo felicidades, creo que te estas dando cuenta existen mas cosas y no nada mas consultas bajas y altas y modificaciones ABM, despues entraras con procedimientos almacenados, disparadores, campos calculados, mineria de datos etc:cool: lo comento por que por ahi surgio una platican donde estabas viendo un poco de php y en mysql encontraras una gran herramienta es mas podrias interactuar con tu base mysql desde vba existiendio dos opciones dependiendo del servidor host de tu bd, pero bueno eso es otro tema saludos
  9. hola [uSER=98799]@Enigma25[/uSER] como te conteste perdon por contestar tarde pero he estado un poco enfermo y necestito reposo abosoluto primero si producto aparte de llevar el codigo lleva su key, por que no puede fungir el coigo como clave principal, te habia mandado ya una bd de muestra todos los key deben ser autonumericos a excepcion de la clave forenea para saber el key para cuando hacer la insercion de datos y relacionarlos puedes utilizar lo siguiente para sacar el ultimo numero autonumerico de una tabla Dim rs As New ADODB.Recordset sqlID = "SELECT @@IDENTITY FROM CAB" rs.Open sqlID, dB, 1, 1 te vuelvo a subir un ejemplo de la bd como puede ser saludos https://mega.co.nz/#!3AxXHDqL!50kjA6n7477xPz0E23EYj1fw6ZuhxcbfGDIfAtg3-qw
  10. Hola jeladio creo que el aporte que te brindo el gran [uSER=46507]@Macro Antonio[/uSER] fue muy bueno ahora acuanto no es culpa del codigo si no de tu mal planteamiento por que no hiciste una Levantamiento de Informacion Correcta, tu comentas que cada registro se guarda con ID diferente, claro que a si debe ser por el ACID (acrónimo de Atomicity, Consistency, Isolation, Durability) de la base de datos cada ID debe ser diferente es el identificador que hace unico al registro, tu problema debe ser que la clave foranea no esta siendo registrada correctamente por eso te toma cada registro como independiente y no un unico moviemiento pero la macro es correcta la que te proporcionaron aqui el error es tu planteamiento, debes conocer bien la estructura de tu bd, si algunos motores lo permiten ejemplo mysql mariadb pero creeme esto no resuelve tu problema si aqui es tu plateamiento saludos PD buen aporte [uSER=46507]@Macro Antonio[/uSER]
  11. [uSER=98799]@Enigma25[/uSER] saludos bueno te comento hay algo bien importante y te lo he comentado con anterioridad existen las claves primaria y las claves foraneas estas son muy importantes en cualquier base de datos relacionar, de manera simple, las claves proporcionan una manera rapida y eficiente de buscar datos en una tabla, además de que permiten preservar la integridad de los datos. clave primaria es identificar de manera unica a los registros de una tabla a traves de toda la estructura de la base de datos. la seleccion de una clave primaria es muy importante en el diseño de una base de datos, ya que es un elemento clave de los datos que facilita la union de tablas y el concepto total de una base de datos relacional. Las claves primarias deben ser unicas y no nulas, de manera que garanticen que una fila de una tabla pueda ser siempre referenciada a traves de su clave primaria Clave foranea podemos decir de manera simple que integridad referencial significa que cuando un registro en una tabla haga referencia a un registro en otra tabla, el registro correspondiente debe existir. Por ejemplo, consideremos la relación entre una tabla cliente y una tabla venta cliente venta | id_cliente | | id_factura | | nombre | | id_cliente | | cantidad | si te das cuenta la realcion es por el id y no por el numero de factura, remision o control en este caso. te voy a consejar algo amigo y te lo digo por que eres una persona que lucha y lucha y no se rinde para empezar un proyecto si inicia primero por Levantar información Analizar Primeros alcances de solución Corregir y/o agregar Desarrollar el diseño Escribir código la Interfaz si te das cuenta aqui surgen muchos cosas por que conforme diseñas te van sugiriendo algo y luego modificas y no es asi amigo esta muy bien que la gente vea lo que se puede lograr con excel y access, pero como desarrollador debes inculcarte que primero que nada es ver los alcances de la solución para desarrollar el diseño y escribir el codigo y no viseversa, amigo [uSER=98799]@Enigma25[/uSER] estructurate, diseña bien tus base de datos de acuero a los alcances de la solucion que quieras dar y solo fijate como meta y destino ese puerto, ya si alguna otra persona desea otro tipo de funciones entonces ya puede ella estudiar tu solucion tu codigo fuente y ellos mismo realizar su propia versión por que cada usuario es una necesidad diferentes como ya te diste cuenta, que agregale esto, que ponle esto, por que llegar a realizar un software enlatado(con muchisimos parametros y funcion miles de configuraciones) no es dificil pero debes tomar todas la consideraciones posibles pero siempre pensando en el alcance de tu software pero esto es desde el principio y no en el vuelo cuando ya esta codificando, hacer lo contrario es un mal habito. ahora no se utiliza un select Max() para obtener el ultimo id de tu clave sino SELECT @@IDENTITY FROM TU_TABLA [/CODE]
  12. hola [uSER=98799]@Enigma25[/uSER] Bueno ahorita que ya vas a empezar con un diseño de tu bd y yo te recomendaria que la que tienes la restructuraras ahora hay algo que debes saber en las BD existe algo que se llama ACID y me preguntaras que diablos es ACID bueno ACID es el acrónimo de Atomicity, Consistency, Isolation, Durability (en español: Atomicidad, Consistencia, Aislamiento, Durabilidad) Atomicidad significa que las modificaciones a la Base de Datos (agregar, borrar o modificar) deben seguir la regla de todo o nada. Si cualquier parte de la transacción falló, por más pequeña que sea dicha parte, toda la transacción falló. Consistencia significa que solamente datos válidos pueden ser escritos en la Base de Datos. Dentro de una transacción se pueden tener temporalmente datos inválidos pero cuando la transacción termina, sea de la forma que sea, la Base de Datos debe tener solamente datos válidos. Aislamiento significa que si varias transacciones se están ejecutando al mismo tiempo, ninguna de ellas interfiere con las otras. Eso implica que la transacción A no conoce ni puede cambiar lo que la transacción B está haciendo. Cada transacción está aislada de todas las demás transacciones, o sea que cada transacción es totalmente independiente de todas las demás transacciones. Durabilidad significa que cuando los cambios a los datos que realizó la transacción son grabados, dichos cambios permanecerán aún cuando se corte la energía eléctrica, se interrumpa la conexión a la red, o cualquier otro problema físico. Si una Base de Datos no cumple con alguno de esos 4 criterios entonces no puede ser considerada confiable ahora entiendes por que te recalque implisitamente Aislamiento mis comentarios amigo, bueno ahora biene bueno no entendi bien tu pregunta amigo podrias ser un poco mas especifico, pero de algo ten seguro si no va por ahi tu pregunta no debes relacionar ejemplo tus tablas con tu numero de control si no con la clave de tu cabecera ejemplo CABECERA --ID_CAB, ID_CLIENTE DETALLE -- ID_DET, ID_CAB, ID_PROD PRODUCTO-- ID_PROD CLIENTE --ID_CLIENTE si no es esto a lo que te refieres espero me lo puedas detallar saludos
  13. Hola [uSER=98799]@Enigma25[/uSER] [uSER=46507]@Macro Antonio[/uSER] bueno el detalle no es el metodo en como actualizar sus inventarios ya sea el que publicaste o el que el gran Macro Antonio hizo favor de publicar sino es el evitar el conflicto en las transacciones por que eso te ahorrara muchos dolores de cabeza si recuerdas cuando te recomende usar las transacciones te comente los alcanzes que tenia me da mucho gusto que lo estes implementando ahora te hago el incapie con el buen diseño de tu bd, olvidate tantinto que trabajas con access y que si va hacer monousuario o multisuario tu aplicacion, es importante que asi como cuidas tu codigo en vba cuides tu bd que es lo mas importante por que es donde se almacenara tu información y de las posibles fallas que puede presentar por que te lo digo por lo siguiente. Update y delete bloquean la fila cuando se utiliza Insert y Select no en tu logica tu intentas actualizar tu inventario cada vez que realizas una transacción una venta o una compra y no es asi, imaginate en una tienda grande de super, si cada vez que realizas una venta actulizaras el inventario abria complicaciones por que ? por que Update bloquea la fila al momento de actualizar el inventario y tanto para llegar al commint en otra caja como para consultar el inventario quedarian bloqueadas por que la maquina que esta utilizando para actualizar su inventario esta utilizando update, y todavia update genera demasiada basura para tu bd la cual aumentara y se hara mas lenta y el rendimiento sera pesimo, hasta que le des mantenimiento, es una mala practica, ahora esto ocurre en partes de segundos, lo cual muchos pueden decir es dificl que suceda y yo te dire como experiencia que no es dificil que ocurra y te daras cuenta con el tiempo si sigues programando este tipo de aplicaciones, ahora otra observación es muy mala practica la forma en que manejas la siguiente te he comentado que por ejemplo en tu tabla Tb_registros manejes la clave que identifica como unico registro en una tabla y ese dependiendo el motor tiene que ser autonumerico, ahora tu manejas un numero que llamas control que es el numero consecutivo de control, esta mal la forma en que controlas esa numeracion es una muy mala practica tambien esta por que LblControl.Caption = Rs.Fields("Maximo") + 1 imaginate el caso de la persona que intenta utilizar este sistema en red y que en diferentes maquinas estan en el proceso de venta, como consultan el numero en ese momento a ambos les aparecerra el 209 ejemplo y lo guardaran con ese numero por que fueron el que recuperaron aqui si se debe aplicar lo de bloquear la celda que controla ese tipo de numeracion por que se debe llevar un control pero en una tabla auxiliar y al iniciar la transaccion es con la primera que debes iniciar db.beg... consulto numero (bloqueo celda con update guardo cabecera guadrdo detalle guardo cartera db.comm suelto bloqueo asi si otro usuario desea iniciar o cerrar su transaccion no podra ocupar ese numero y te daras cuenta cuando inicies con una buena estructura en tu tablas manejando cabecera y detalle en conclusion los saldos de inventarios solo se actualizan cuando se consultan amigo por que dime (para que es necesario saber la existencia o actualizar en el proceso de venta) si el cliente trae el producto en la mano es por que existe cierto ono ? si quiesieran consultar entonces si se hace un select y se actualizan los inventarios pero ese es otro cantar saludos espero te puedan servir mi humilde opinion amigo sigue adelante vas muy bien saludos
  14. hola deben de tomar algo en cuenta no es recomendable utilizar access como multiusuario por que tarde o temprano la bd se corrompe aun que haya transacciones, pero puedes probarlo ya que a pesar de que access es multi usuario jamas tendras un Cliente - Servidor aunque lo parezca primero debes la carpeta donde esta la bd esta compartida y con permisos de escritura a tu cadena de conexion ejemplo cnn.Open "provider=microsoft.jet.OLEDB.4.0;" & "data source=" & App.Path & "\bd.mdb" cambiala por esta cnn.Open "provider=microsoft.jet.OLEDB.4.0;" & "data source=" & "\\PcServidor\CarpetaCompartida\bd.mdb"
  15. Hola [uSER=98799]@Enigma25[/uSER] hola mira no tengo material ahorita a la mano para recomendarte tampoco un ejemplo espero poder realizarte y te lo hare llegar, recuerda es una muy mala práctica en sql en general estar haciendo update de tablas cuyos registros se usan mucho. y sin olvidarnos del hecho de que cada update deja basura en la bd, haciéndola más grande y mas lenta
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png