Archivo

Archive for the ‘SQL Server’ Category

[SQL] Crear procedimientos almacenados con múltiples filtros opcionales

febrero 11, 2015 Deja un comentario

El título es muy descriptivo, ya que este escenario; suele ser muy común en el desarrollo de software. Al ser un escenario concurrido, existen muchas alternativas para darle solución. En este post vamos a mostrar un ejemplo de cómo hacerlo, de manera rápida y sencilla.

Procedimiento almacenado (motor de base de datos)

Un procedimiento almacenado de SQL Server es un grupo de una o varias instrucciones Transact-SQL o una referencia a un método de Common Runtime Language (CLR) de Microsoft (Microsoft, 2015).

Escenario en cuestión
Tenemos que realizar una búsqueda en la base de datos por más de cinco campos opcionales. Esto en más de una tabla, por el negocio (no hablaremos del negocio), es decir; tenemos un tipo de caja, que si selecciona si es chica, mediana o grande se filtra por este tipo, sino se selecciona ninguna; se regresan los registros que correspondan a los tres tipos que tenemos en la base. A esto nos referimos cuando hablamos de campos opcionales.

Tenemos diferentes casos, según los tipos de datos.

Enteros
Para un entero, como su valor no puede ser nulo desde código ( a menos que se declare int?) el valor que se asigna por defecto es un ‘0’, para estos casos podemos usar el siguiente ejemplo

Lee el post completo aquí: http://wp.me/p3a45l-lI

Anuncios
Categorías:SQL Server Etiquetas: ,

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_X". The conflict occurred in database "DB", table "TableName", column ‘id’.

septiembre 12, 2011 Deja un comentario

Buenas,

Aquí de regreso con el blog. Les platico rápido resulta ser que hay un cambio en la Base de Datos y tengo que agregar unas cuantas tablas, para colocar unos catálogos. Bien ya que tengo estas tablas tengo que agregar unas cuantas relaciones, pero al querer guardar el diagrama SQL Server Management Studio me escupe este mensaje: “The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_X". The conflict occurred in database "DB", table "TableName", column ‘id’.” Como ya lo saben estos chicos de Microsoft no son muy explícitos con sus mensajes.

Así que revisando la relación que se crea, que se ve más o menos así:

 

image

(Para obtener esta cuadro de dialogo, seleccionamos la tabla de la llave foránea y hacemos clic derecho, y seleccionamos Relationships)

Solo tenemos que cambiar la propiedad de “Comprobar datos existentes al crear o habilitar de nuevo.” a un valor NO y listo. Como es un ambiente de desarrollo, eliminar los datos no será problema. Atención en esto que en producción no creo que sea algo bueno.

Con esto se soluciona el mensaje que pone a prueba nuestra paciencia. Espero les ayude.

Saludos.

Technorati Tags: ,,

[WTF] Pero… que le paso… a SQL Server

noviembre 27, 2009 1 comentario

Buenas,

Solo puedo decir: “Tengo miedo, tengo miedo”… jaja 😛

Alguna idea de lo que le pasa a SQL Server solo con ver esta imagen. Espero que alguien me diga si le ha pasado esto y me ayude a solucionarlo :S

errorSQLServer2008

Etiquetas de Technorati: ,,

[LINQ] SELECT en LINQ To SQL

octubre 10, 2009 1 comentario

Buenas,

Aquí el primero de unos post rápidos de LINQ TO SQL, para aquellos que estamos aprendiendo :D. Comenzamos con un SELEC

 

1.- Select * from —-> xD

T-SQL

SELECT * FROM dbo.EntradasBlog

LINQ TO SQL

VB.NET

Dim [select] = From e In sel.EntradasBlogs Select e

C#

var selec = from e in sel.EntradasBlogs
                          select e;

 

2. Select —> en un solo campo

T-SQL

SELECT Titulo FROM dbo.EntradasBlog

LINQ TO SQL

VB.NET

Dim [select] = From e In sel.EntradasBlogs Select e.Titulo

C#

var selec = from e in sel.EntradasBlogs select e.Titulo;

3.- Select —> obtenido el primer registro

T-SQL

SELECT TOP 1 Titulo FROM dbo.EntradasBlog

LINQ TO SQL

VB.NET

Dim [select] = (From e In sel.EntradasBlogs Select e.Titulo).First

C#

var selec = (from e in sel.EntradasBlogs 
                         select e.Titulo).First();

4. Select —> un registro en especifico

T-SQL

SELECT Titulo FROM dbo.EntradasBlog
WHERE id = 1

LINQ TO SQL

VB.NET

Dim [select] = sel.EntradasBlogs.SingleOrDefault _
                (Function(c) c.Id = "0000000001")

donde ser es:

Dim sel As New DemosDataContext

ó

Dim [select] = (From e In sel.EntradasBlogs _
                     Where e.Id = "0000000001" _
                       Select e.Titulo).Single

C#

var selec = sel.EntradasBlogs.SingleOrDefault(c 
                        => c.Id == "0000000001");

ó

var selec = (from e in sel.EntradasBlogs
             where e.Id == "0000000001"
             select e).Single();

5. Select —> un numero especifico de registros

T-SQL

SELECT TOP 3 * FROM dbo.EntradasBlog 

LINQ TO SQL

VB.NET

Dim [select] = (From e In sel.EntradasBlogs).Take(3)

C#

var selec = (from e in sel.EntradasBlogs 
                         select e).Take(3);

6. Select—> con subquerys

T-SQL

SELECT Titulo FROM dbo.EntradasBlog 
WHERE id = (SELECT id from dbo.Entradas 
            WHERE (id = '0000000001'))  

LINQ TO SQL

VB.NET

Dim [select] = _
        (From e In sel.EntradasBlogs _
        Where (From en In sel.Entradas _
               Where (en.id = "0000000001") _
               Select en.id).Contains(e.Id) _
        Select e.Titulo)

C#

var selec = from e in sel.EntradasBlogs
                        where (
                                from en in sel.Entradas
                                where en.id == "0000000001"
                                select en.id
                                ).Contains(e.Id)
                        select e.Titulo;

Bien parece que estos son algunas maneras de realizar Select desde LINQ2SQL, ya en otros post’s iremos hablando sobre otras sentencias.

Etiquetas de Technorati: ,,,

[ASP.NET – SQL] Tare 2. Conectándome a una BD sin colocar la cadena de conexión en el WebConfig

junio 19, 2009 1 comentario

Bien, aquí el como hacer lo que se menciona en el titulo del post. Primero debemos tener una base de datos (la cual ya tengo y uso para las demos, estoy usando SQL Server Enterprise). Bien mi base contiene una tabla llamada EntradasBlog con 5 campos que son los siguientes:

image

Bien pues vamos a trabajar con esta base, creamos un proyecto web asp.net y agregamos una clase que se llame ClConexion, en la cual lo primero es agregar los nombres de espacios que vamos a usar:

using System.Data;
using System.Data.SqlClient;

Después creamos una función que nos regrese la conexión el código es este:

public static SqlConnection cnx()
{
    string conexion = "Data source=SQLNOR;" +
                        "initial catalog=BD_DEMOS;" +
                        "User id=sa; password=******
    SqlConnection con = new SqlConnection(conexion);
    return con;
}

Con esto ya tenemos nuestra conexión ahora veamos si funciona, para esto agregamos un GridView a nuestra página el cual enlazaremos desde código, vamos a colocar el siguiente código en el evento Load de nuestra página:

DataSet ds = null;
            SqlDataAdapter da = null;

            using (SqlConnection conexion = ClConexion.cnx())
            {
                SqlCommand com = new SqlCommand("Select * From EntradasBlog", conexion);
                com.CommandType = CommandType.Text;

                ds = new DataSet();
                da = new SqlDataAdapter(com);
                da.Fill(ds);

                com.Dispose();

                gvEntradasBlog.DataSource = ds;
                gvEntradasBlog.DataBind();
            }

 

Con esto tenemos todo listo, solo falta generar y listo!, entonces nuestra página se muestra así:

image

Bien espero que les ayude, cualquier duda, escríbanla en los comentarios. Y no olviden votar por el blog 😀

Etiquetas de Technorati: ,,,,,

[WPF] Conectándome a una Base de Datos SQL

mayo 10, 2009 14 comentarios

Un pequeño ejemplo de como hacer esto en una aplicación en WPF, esto debido a una pregunta dentro de este Blog. Lo primero que pensé cuando me preguntaron como hacer esto  fue: “Es lo mismo que en Aplicaciones para Windows”. Y aquí un ejemplo sencillo.

Primero nos vamos a SQL Management Studio nos conectamos a nuestro motor de base de datos y creamos una Base sencilla, con una tabla y agregamos valores, esto con la siguientes instrucciones:

--Creamos la base de datos
CREATE DATABASE BdWPFEjemplo
GO

--Indicamos que vamos a trabajar sobre esta nueva bd
USE BdWPFEjemplo
GO

-- Creamos una tabla
CREATE TABLE Alumnos (nombre NVARCHAR(50), apellido NVARCHAR(50), edad INT)
GO

--Asignamos algunos valores a nuestra tabla
INSERT INTO Alumnos VALUES ('Norberto','Rojas',23)

Ya que tenemos nuestra BD, lo que sigue es crear nuestro proyecto de WPF. Una vez aquí lo que vamos a hacer es escribir la siguientes líneas en nuestro archivo app.config

<appSettings>
    <add key="cnx" value="Data Source=.\SQLNOR;
         Initial Catalog=BdWPFEjemplo;
         Persist Security Info=True;
         User ID=*****; 
         Password=*****" />
  </appSettings>

Ahora solo falta ver que es lo que queremos hacer, si solo una consulta, un actualización una inserción o ejecutar algún Procedimiento almacenado que realice una combinación de las acciones antes mencionadas. Para el nuestro caso como es un ejemplo sencillo solo ejecutaremos un SELECT común para mostrar el nombre de los alumnos (en este caso solo el mío) primero agregamos el código para nuestra conexión que es este:

private SqlConnection myConexion()
{
  return new SqlConnection(ConfigurationSettings.AppSettings["cnx"]);
}

Ya con esto solo ejecutaremos nuestra instrucción SELECT con un command y listo. El código es el siguiente:

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                SqlConnection conn = myConexion();
                SqlCommand comm = new SqlCommand("SELECT nombre FROM Alumnos", conn);

                conn.Open();
                txtNombreAlumno.Text =  comm.ExecuteScalar().ToString();
                comm.Dispose();
                conn.Close();

            }            
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            
        }

Y si generamos y ejecutamos este es el resultado:

image

Y como pueden ver, el hecho de conectarte a una base de datos, ya sea desde una aplicación de WPF, una aplicación para Windows, un Web Services o alguna aplicación de ASP.NET el proceso es el mismo, y debe de funcionar igual para todo. Espero que este sencillo post les sea útil. Amito Arturo aquí el ejemplo que me pedias, espero que te ayude y cualquier cosa no dudes en comentarlo o pedir ayuda en el Blog.

Slaudos!

[SQL] Curso de SQL Server 2008 suspendido a causa de la Influenza

abril 28, 2009 1 comentario

Buenos días, escribo para informales a todas aquellas personas que han estado asistiendo al Curso de SQL Server que debido a la situación por la que pasa el país a causa de la Influenza se ha tomado la decisión de suspender el Curso hasta nuevo aviso, a todos aquellos interesados les pido que estén al pendiente de este Blog para poder estar al corriente con lo que suceda.

Por el momento queda suspendido el curso hasta nuevo aviso, espero su comprensión Saludos.