• Viernes 29 de Marzo de 2024, 10:01

Mostrar Mensajes

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


Mensajes - intebysa

Páginas: [1]
1
SQL Server / Re: Restar resultados de dos tablas
« en: Lunes 27 de Junio de 2011, 17:04 »
Amigo muchas gracias, realmente no habia usado la clausula NOT IN pero veo que es muy util y parecida a NOT EXISTS. De todas formas me sirvio mucho tu respuesta y efecto tienes toda la razon cuando Fichas.FichaAsignada, se ve que analizaste bien lo que posteé.
Desde Costa RIca, muchas gracias.

Cita de: "ProfesorX"
Hola intebysa, te recomiendo que utilices [ code][ /code] (sin espacio en los corchetes) cuando publiques tu codigo, o en el editor utiliza el code, que esta junto al boton de quote, eso mejora la legibilidad del codigo.

Respecto a tu duda, en algunos casos estas utilizando Fichas.categoria y en otros Fichas.FichaAsignada, no se si eso tenga que ver algo.

Suponiendo que fuera categoria y no FichaAsignada, creo que las siguientes consultas te daran el resultado que deseas.

Código: SQL
  1. SELECT * FROM Fichas
  2. WHERE idficha NOT IN
  3. (SELECT fichas.idficha FROM AccionesEnFichas, Fichas
  4. WHERE AccionesEnFichas.IdFichas=Fichas.IdFicha
  5. AND Fichas.categoria LIKE '%A%')
  6. AND categoria LIKE '%A%'
  7.  

Código: SQL
  1. SELECT COUNT(idficha), categoria FROM Fichas
  2. WHERE idficha NOT IN
  3. (SELECT fichas.idficha FROM AccionesEnFichas, Fichas
  4. WHERE AccionesEnFichas.IdFichas=Fichas.IdFicha)
  5. GROUP BY categoria
  6.  

Saludos :)

2
SQL Server / Restar resultados de dos tablas
« en: Sábado 25 de Junio de 2011, 18:19 »
Buen dia señores de antemano deseo agradecer su valiosa ayuda.

Mi asunto es el siguiente. Tengo dos tablas llamdas Fichas y AccionesEnFichas. Las cuales estan compuestas por las siguientes campos:

Fichas: IdFicha, Categoria

AccionesEnFichas:IdAccionesEnFichas,IdFichas.

Asi por ejemplo si las tablas tuvieran registros estarian como asi:

TABLA FICHAS

IdFicha     Categoria

     1               A

     2               A

     3               B

     4               C

y digamos que la tabla AccionesEnFichas estaria asi:

IdAccionesEnfichas               Idfichas

         100                                  1

         200                                  3

Yo necesito sacar LA CANTIDAD de fichas que no estan presentes en AccionesEnFichas por Categoria(si, asi es por Categoria).

Yo lo hice por separado pero no se como unirlas, miren lo que hice:

Primero, sume todas las fichas en la tabla Fichas que correspondian a esa categoria, de esta manera:

SELECT COUNT(*) FROM Fichas WHERE Fichas.Categoria LIKE '%A%'

El resultado en este cado es 2. Perfecto

Luego me fui a la tabla AccionesEnFichas y sume todas aquellas fichas estaban presentes por categoria. Me quedo de la siguiente forma:

SELECT COUNT(*) FROM AccionesEnFichas,Fichas WHERE AccionesEnFichas.IdFichas=Fichas.IdFichas AND Fichas.FichaAsignada LIKE '%A%'

El resultado en este cado es 1. Perfecto

Esas dos consultas me estan dando la cantidad de registros reales de cada tabla pero no se ahora como restarlos.

No se si hay que usar el Inner Join o algo parecido.

Intente con tambien de esta otra manera manera.
SELECT * FROM Fichas where NOT EXISTS(SELECT * FROM AccionesEnFichas, Fichas WHERE AccionesEnFichas.IdFichas=Fichas.IdFichas AND Fichas.FichaAsignada LIKE '%A%')
Ahi el resultado me dio cero, en vez de darme 1. Pues lo unico que no existe de la tabla Fichas en esa categoria es un registro. Los demas son de otras categrorias.

Espero haberme explicado. Desde ya, agradezco su valiosa ayuda.

Desde ya, agradezco su valiosa ayuda.

3
C# / Duda cerrar una conexion con SQL Server desde visual C#
« en: Jueves 5 de Mayo de 2011, 19:39 »
Mi consulta es la siguiente:

Estoy trabajando sobre una aplicación hecha en Visual Studio 2008 en C# y con conexión a dos base de datos SQL Server 2008, ambas bases de datos se encuentran por separado en dos computadoras.
Tengo un método que funciona con un objeto timer el cual verifica cada segundo el estado de la conexion con la base de datos del servidor. Mi duda es la siguiente:

Cuando ingresa a este metodo abre la conexión con la base de datos del servidor y verifica, todo eso lo hace correctamente, el problema aparece cuando de verdad se pierde la conexión con la base de datos del servidor.
La aplicacion siguie detectando que existe una conexion a pesar de que en realidad no la hay...
Lo que quiero saber es si hay alguna forma de actualizar la variable de conexion o limpiarla completamente para cerrar la conexion realmente, porque utilizando el metodo .Close() al parecer no esta funcionando.
Este es el codigo del metodo que estoy utilizando:


Las variables se inicia con estos valores:


connection = new SqlConnection(cadena.ToString());
contadorInicioTimerConexion = 0;
banderaConexionActual = false;
 banderaConexionAnterior = false;

private void timer_verifica_conexion_Tick(object sender, EventArgs e)
        {
           
// 5 segundos despues de que el formulario carga se comienza a verificar la conexión cada segundo
            if (contadorInicioTimerConexion > 5)
            {
                try
                {            

                    connection.Open();

                    if (connection.State == ConnectionState.Open)
                    {
                        //si se abre la conexion cambia el estado de la variable
                        banderaConexionActual = true;

                        //Si actualmente existe conexión, pero anteriormente no habia.
                       
                        if (banderaConexionAnterior == false)
                        {
                                 // Registra el evento reestablecimiento de conexión
                         }
                       
                }
                 //Si entra al catch es porque la conexion no se pudo abrir y por lo tanto no hay conexion con la base de datos
                catch (SqlException ex
                {
                     //Cambia la bandera a desconectado
                    banderaConexionActual = false;

                    //Si anteriormente existia conexión conexion pero actualmente no hay.
                   
                    if (banderaConexionAnterior == true && banderaConexionActual == false)
                       {
                       
                        //Registra el evento no se pudo establecer la conexión                      
                        }                


                }
                finally
                {
                    if (connection != null)
                    {
                         if (connection.State == ConnectionState.Open)
                         {
                             connection.Close();
                             connection = null;
                        }
                }
                }
               
            }
            contadorInicioTimerConexion++;
            banderaConexionAnterior = banderaConexionActual;

        }

Páginas: [1]