Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ZeroVzla

#1
Programación General / Re: Crear apk [dudas]
21 Julio 2015, 04:28 AM
Buen día,

Acá tienes un buen curso, es gratis y te dará todo lo que tienes que saber para comenzar.

https://courses.edx.org/courses/UPValenciaX/AIP201x/2T2015/info

Saludos.
#2
Hola,

Yo pondría un div contenedor o como se le conoce "wrapper" y dentro cada elemento en un div que tenga la propiedad float: left; y le pones margenes a la derecha (y otros a los demás lados), así todos los elementos serán cargados hacia la izquierda independientemente del tamaño de la pantalla, es decir, entre más ancha más elementos aparece.

Saludos!!...
#3
Buen día,

Tienes dónde expliquen ese modelo?, como lo veo pareciera ser la segunda opción porque al pasar el atributo fecha hacia una nueva tabla es como que estés creando una relación de muchos a muchos.

Una cosa, no si si el recuadro arriba de la tabla "editorial_libro" representa la clave primaria en tu modelo pero de ser así te falta colocar también el "codigo de editorial" como llave primaria ya que en una relación de muchos a muchos la tabla que se genera tiene como clave primaria una clave compuesta entre las claves primarias de cada tabla en cuestión.

Saludos.
#4
Java / Re: Pequeño trabajito (AGENDA)
22 Mayo 2015, 18:50 PM
Buen día,

Qué necesitas en específico ya que veo que para las otras funciones colocas que recibe objetos de cierto tipo pero no indicas la estructura de los mismos.

Saludos.
#5
Hola,

No recuerdo bien pero si usas una versión de sqlserver express o sin licencia, tiene un límite de espacio ocupado por esquema 4gb para el archivo .mdf, así que si es tu caso revisa eso.

Saludos.
#6
Hola,

También puedes usar with que te permite tener especificar tablas temporales con ciertas condiciones de búsqueda antes de enlazar con las demás. Pasarías de enlazar 10 filas de tabla A con otras 10 filas de tabla B (suponiendo que ambas tablas tienen 10 filas)... a enlazar 5 filas de la tabla A que cumplen cierta condición con 3 filas de la tabla B que también cumplen otras condiciones.

Por ejemplo:

Código (sql) [Seleccionar]

WITH Sales_CTE (SalesPersonID, TotalSales, SalesYear)
AS
-- Define the first CTE query.
(
   SELECT SalesPersonID, SUM(TotalDue) AS TotalSales, YEAR(OrderDate) AS SalesYear
   FROM Sales.SalesOrderHeader
   WHERE SalesPersonID IS NOT NULL
      GROUP BY SalesPersonID, YEAR(OrderDate)

)
,   -- Use a comma to separate multiple CTE definitions.

-- Define the second CTE query, which returns sales quota data by year for each sales person.
Sales_Quota_CTE (BusinessEntityID, SalesQuota, SalesQuotaYear)
AS
(
      SELECT BusinessEntityID, SUM(SalesQuota)AS SalesQuota, YEAR(QuotaDate) AS SalesQuotaYear
      FROM Sales.SalesPersonQuotaHistory
      GROUP BY BusinessEntityID, YEAR(QuotaDate)
)

-- Define the outer query by referencing columns from both CTEs.
SELECT SalesPersonID
 , SalesYear
 , FORMAT(TotalSales,'C','en-us') AS TotalSales
 , SalesQuotaYear
 , FORMAT (SalesQuota,'C','en-us') AS SalesQuota
 , FORMAT (TotalSales -SalesQuota, 'C','en-us') AS Amt_Above_or_Below_Quota
FROM Sales_CTE
JOIN Sales_Quota_CTE ON Sales_Quota_CTE.BusinessEntityID = Sales_CTE.SalesPersonID
                   AND Sales_CTE.SalesYear = Sales_Quota_CTE.SalesQuotaYear
ORDER BY SalesPersonID, SalesYear;
GO


Obtenido de https://msdn.microsoft.com/es-ve/library/ms175972.aspx.

De igual manera y como lo indican en las respuestas anteriores los índices, usados correctamente, son de extrema importancia en las base de datos con grandes cantidades de registros. Busca cuáles son las condiciones de búsqueda que siempre usas y crea un índice de ellas.

Por otra parte veo que usas concat y no concatenas nada en realidad eso te resta velocidad ya que llevas a cabo la operación sobre cada registro sin necesidad y además de ello tienes el uso del LIKE que también trabaja bastante lento.

Te recomiendo algo, si en verdad tienes que concatenar, por ejemplo concat(medicamento.medicamento, medicamento.casilla) y ésa búsqueda es sumamente repetitiva o puesto de otra manera se lleva a cabo muchas, muchas veces... entonces puedes crear un índice de la misma, así el manejador no tiene que llevar a cabo la instrucción "concat(medicamento.medicamento, medicamento.casilla)" sobre todas las filas cada vez que alguien genere ésa consulta sino que se va al índice y ya.

Otra recomendación (se me ocurrió pero no se que tan buena es) es crear un select en el que encuentres primero el producto, en éste caso la medicina, y luego llevas a cabo varios subselects, se me ocurre que de ésta manera no enlazas tantas tablas y puede generarse más rápido la salida, algo como:

Código (sql) [Seleccionar]

SELECT medicamento.id_med, medicamento.medicamento, medicamento.casilla, medicamento.stockTotal,
(select lote.id_lote from lote where lote.id_med = medicamento.id_med),
(select lote.stock from lote where lote.id_med = medicamento.id_med),
(select proveedores.id_lin from proveedores where proveedores.id_lote = lote.id_lote)
.
.
.
.
FROM medicamento
WHERE CONCAT(medicamento.medicamento, medicamento.casilla) LIKE '%"+valor+"%' GROUP BY medicamento


De ésta manera, creeeeeo, el manejador llevará a cabo la consulta principal (el select con la condición where) y luego llevará a cabo las subconsultas para buscar las demás columnas.

Espero te sirva.
#7
Bases de Datos / Re: Usar case
17 Mayo 2015, 05:51 AM
Hola,

Bueno creo que deberías probar mejor usando algo llamado "stored procedures" / "procedimientos almacenados", lee sobre PL/SQL. El case te permite hacer el tipo de condición que quieres pero como te dice el error la idea es que le case devuelva una columna en el select. Si te fijas tienes un select principal a la tabla "tabla1" y dentro de un select ¿qué se especifican? pues columnas.

Con PL/SQL puedes un crear procedimiento y dentro del mismo puedes armar/crear/especificar querys para luego ejecutarlos.

A continuación un link en el que explican cómo crear querys dinámicos en sql server, que aunque no es tu objetivo principal verás en la sección "Dynamic SQL in a Stored Procedure" cómo crean un procedimiento que ejecuta distintos querys dependiendo de ciertas condiciones.

http://www.codeproject.com/Articles/20815/Building-Dynamic-SQL-In-a-Stored-Procedure

Tal vez si nos colocas qué quieres lograr con eso podamos darte soluciones con distintas aproximaciones. Por ahora, así como lo tienes y como lo quieres no vas a poder hacerlo.


Saludos.


#8
Bases de Datos / Re: Ayuda con diseño de BD
17 Mayo 2015, 05:09 AM
Hola,

Si los dos campos son exclusivos, es decir ,nunca se va a dar el caso de que lo registren con el número de matrícula y luego con le número provisorio, entonces puedes colocar como clave primaria las dos columnas. De lo contrario y aunque pudieras seguir colocando las dos columnas como clave primaria, tendrías el caso que menciono (el mismo artículo registrado dos veces, uno con el número de matrícula y sin número provisorio , y el otro con número provisorio sin número de matrícula). En base de datos existe algo llamado normalización y para llevar a cabo la técnica debes emplear varias reglas (primera forma normal, segunda forma normal, etc..) te sugiero que leas sobre ella.

Como lo veo podrías crear una columna que sea el id del registro (entero autoincremental), y los campos que mencionas solo son información del objeto.

articulo {id_articulo,matricula,num_provisorio}

Éso te llevará a que no estés en concordancia con la segunda forma normal pero a veces como en tu caso se debe "desnormalizar" para tener el resultado deseado.

Otro caso puede ser el de agregar a la clave primaria otro campo de la tabla que pudiera generar una clave única.

Así puedes resolver el problema y tienes un id único para eliminar/atualizar... Sin embargo te sugiero que leas sobre las formas normales para que puedas dar con la respuesta que simpatice con tu ideal.

Saludos.

#9
PHP / Re: PDO OCI Acentos
6 Marzo 2015, 03:35 AM
Buen día a todos,

Pues hoy resolví el tema y quería compartir con ustedes la solución, así si alguno tienen el mismo problema no tiene que pasar una semana trastabillando en miles de foros así que sencillo:

En mi caso, y como expliqué con anterioridad, el php está instalado como FastCGI pero es llamado PHP-FPM (FastCGI Process Manager), lo indico ya que les ayudará en un futuro a buscar sobre problemas. Así pues, resulta que las configuraciones como el NLS_LANG, LD_LIBRARY_PATH, NLS_DATE_FORMAT etc.. no las toma de las variables de entorno del usuario que lo ejecuta (hablando en linux), en vez, la toma de su archivo de configuración llamado php-fpm.conf, lo que quiere decir que para setear dichas variables de entorno deberán colocar en el archivo mencionado una línea por cada variable tal cual el siguiente ejemplo:

env[NLS_LANG] = AMERICAN_AMERICA.AL32UTF8

Así que exportar las variables o setearlas en los .profile de los usuarios no servirá de mucho.

Luego lo que resta es reiniciar el php.

Adjunto el archivo en donde se explica todo sobre la instalación, bien sea con php como modulo de apache o como fpm y la integración con oracle.

http://www.oracle.com/technetwork/database/database-technologies/php/201212-ug-php-oracle-1884760.pdf

En particular revisar las páginas 78 (php como modulo de apache, en la cual indican que deben setear las variables al arrancar el server, y la página 84 en donde explican lo que comento en el post.

Me gustaría terminar con una nota que colocan en el archivo para que ni siquiera intenten usar putenv() en éste caso.

Note: Do not set Oracle environment variables in PHP scripts with putenv(). The web server
may load Oracle libraries and initialize Oracle data structures before running your script. With
persistent connections the environment from one script may affect subsequent scripts. Using
putenv() causes hard to track errors as the behavior is not consistent for all variables, web
servers, operating systems, or OCI8 functions.

Saludos
#10
PHP / [Resuelto] PDO OCI Acentos
27 Febrero 2015, 21:33 PM
Buen día,

Tengo problemas con los acentos y caracteres especiales como la ñ usando PDO_OCI. El ambiente es un servidor debian, nginx y php como cgi. Ya intente colocando el charset en la conexión: UTF-8, AL32UTF8. Si alguien me puede guiar al menos lo agradecería.

Saludos!.