Para determinar si un sqlDataSource tiene o no datos (para efectos de validaciones por ejemplo), basta con usar su método OnSelected, tal y como se describe a continuacion:
Protected Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As SqlDataSourceStatusEventArgs)
Dim Rows As Integer = e.AffectedRows
End Sub
La variable Rows contendrá el número de registros regresados por el sqlDatasource, entonces, si por ejemplo se requiere mostrar un boton en base a si la consulta regresó o no registros, procedemos a lo siguiente:
Protected Sub OperacionesDia_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles OperacionesDia.Selected
Dim totalRows As Integer = e.AffectedRows
If totalRows = 0 Then
Button1.Visible = False
Else
Button1.Visible = True
End If
End Sub
Thursday, December 24, 2009
Saturday, December 12, 2009
Problema Visual Studio 2005 debugger y IE8
Acabo de encontrarme con este problema, y esque cuando inicio mi WebApp en Visual Studio 2005 me abre la ventana del Explorador pero el debugger no inicia, por lo que puedo correr la App varias veces (F5), y ya que el debugger falla en iniciar, no puedo correrla paso a paso.
Lo que encontré fue que al Instalar el IE, éste cuenta con la característica llamada Losely-Coupled Internet Explorer (LCIE), lo que ocasiona que IE corra en varios procesos, no permitiendo que el debugger pueda pegarse al procesos de nuestra WebApp correcto, y podémos encontras mas info en el siguiente link
La solución es desactivar el LCIE, de la sig. manera:
1. Abrir RegEdit
2. Ir a HKEY_LOCALMACHINE > SOFTWARE > Microsoft > Internet Explorer > Main
3. Agregar un parametro de tipo DWORD llamado TabProcGrowth
4. Establecer el valor de este parametro en 0
Si estas corriendo en WinVista o posterior tambien deberas desactivar el modo protegido
Lo que encontré fue que al Instalar el IE, éste cuenta con la característica llamada Losely-Coupled Internet Explorer (LCIE), lo que ocasiona que IE corra en varios procesos, no permitiendo que el debugger pueda pegarse al procesos de nuestra WebApp correcto, y podémos encontras mas info en el siguiente link
La solución es desactivar el LCIE, de la sig. manera:
1. Abrir RegEdit
2. Ir a HKEY_LOCALMACHINE > SOFTWARE > Microsoft > Internet Explorer > Main
3. Agregar un parametro de tipo DWORD llamado TabProcGrowth
4. Establecer el valor de este parametro en 0
Si estas corriendo en WinVista o posterior tambien deberas desactivar el modo protegido
Friday, November 27, 2009
Agregar ID autonumerico en consulta SQL
Tal y como lo describen el siguiente link
La manera mas sencilla de autonumerar los registros arrojados por una consulta SQL,
sería la siguiente:
La manera mas sencilla de autonumerar los registros arrojados por una consulta SQL,
sería la siguiente:
select rank() OVER (ORDER BY a.au_lname, a.au_fname) as rank,De igual manera se puede asignar un autoumerico a una tabla haciendo agrupaciones por uno o mas campos:
a.au_lname, a.au_fname
from authors a
order by rank
select row_number() over (partition by a.BakeLineId order by a.BakeLineId) as rank ,a.*
from tblBakeComment_Impt a
order by BakeLineId
Wednesday, November 4, 2009
ASP .NET Guardar variables en ViewState
Para guardar una variable en ViewState y poder recuperar su valor entre Postbacks seguir los siguientes pasos:
//Para guardarla antes del Postback:
Dim vNombre As String
//Para guardarla antes del Postback:
ViewState("vNombre") = txtNombre.text;
//ParaRrecuperarla:
ViewState("vNombre") = txtNombre.text;
Recuerda que usar el ViewState es bueno en casos donde la información a almacenar es poca, ya que el valor de la cadena ViewState viaja de Cliente a Server y viceversa, cada vez que se realizan los Posts a Servidor, por lo que almacenar en Viewstate, un Dataset muy pesado por ejemplo, nos traería serios problemas de performance
Tambien hay que tomar en cuenta que si el usuario regresa en el Browser (back) el valor de la variable regresa a su valor anterior, por lo que, si queremos guardar el valor durante toda la sesión utilizamos lo siguiente:
//Para guardarla antes del Postback:
Session("vNombre") = txtNombre.text;
//ParaRrecuperarla:
Session("vNombre") = txtNombre.text;
De esta manera el valor de la variable siempre será el mismo, sin importar si el usuario regreso a una página anterior =D
Tuesday, November 3, 2009
Abrir Nueva Ventana dentro de Ajax UpdatePanel
Al intentar abrir una nueva ventana dentro de un Ajax UpdatePanel
marca un error de Parsing, es decir, si queremos abrir una nueva ventana
de la siguiente manera:
Response.Write("<script language="javascript"> window.open('http://pagina.pdf'); </script>")
Nos marcaría un error, ya que este tipo de llamada es ignorada por el UpdatePanel.
Esto lo podemos resolver, llamando la nueva ventana de la sig forma:
ScriptManager.RegisterClientScriptBlock(Me.UpdatePanel1, Me.UpdatePanel1.GetType(), "AnyScriptNameYouLike", "window.open('http://pagina.pdf');", True)
marca un error de Parsing, es decir, si queremos abrir una nueva ventana
de la siguiente manera:
Response.Write("<script language="javascript"> window.open('http://pagina.pdf'); </script>")
Nos marcaría un error, ya que este tipo de llamada es ignorada por el UpdatePanel.
Esto lo podemos resolver, llamando la nueva ventana de la sig forma:
ScriptManager.RegisterClientScriptBlock(Me.UpdatePanel1, Me.UpdatePanel1.GetType(), "AnyScriptNameYouLike", "window.open('http://pagina.pdf');", True)
Saturday, July 18, 2009
Instalar Sql Server 2005 en Windows 7
El otro día instalé SQLServer 2005(x64) en mi máquina, pero me marcaba un Warning en el test de configuración, en la parte de IIS, por lo que navegando en internet encontré que se deben activar las siguientes opciones de Windows (Control Panel -> Program and Features -> Turn Windows Features on or off) Todas las opciones estan dentro la categoría de Internet Information Services.
Static Content (WWW Services) Common HTTP Features
Default Document (WWW Services) Common HTTP Features
HTTP Redirection (WWW Services) Common HTTP Features
Directory Browsing (WWW Services) Common HTTP Features
ASP.Net (WWW Services) Application Development Features
ISAPI Extension (WWW Services) Application Development Features
ISAPI Filters (WWW Services) Application Development Features
Windows Authentication (WWW Services) Security
IIS Metabase and... ISS 6 Management Compatibility
IIS 6 WMI Compatibility ISS 6 Management Compatibility
Seleccionar fila n de una tabla de SQL Server
En este post les mostraré varias alternativas con las que podrémos consultar una columna "n" de una tabla, por ejemplo, consultar la columna 5 en una tabla.
Hay que tomar en cuenta que, en caso de traernos una fila de una tabla muy pesada, por decir, la fila 5,124,244 puede traernos serios problemas de desempeño. Así que considera utilizar planes de ejecución para probar los métodos en Resultsets muy pesados y ver cuál te funciona mejor.
El primer paso es crear la tabla de ejemplo:
Alternativa 1: TOP anidados
Alternativa 2: NOT IN
Alternativa 3: "count derivado" se asume que FName is único
Alternativa 4: MAX
Alternativa 5: Uso de cursores
Referencia
Hay que tomar en cuenta que, en caso de traernos una fila de una tabla muy pesada, por decir, la fila 5,124,244 puede traernos serios problemas de desempeño. Así que considera utilizar planes de ejecución para probar los métodos en Resultsets muy pesados y ver cuál te funciona mejor.
El primer paso es crear la tabla de ejemplo:
CREATE TABLE Names
(
NameID INT IDENTITY(1, 1)
PRIMARY KEY CLUSTERED,
FName VARCHAR(32)
)
GO
SET NOCOUNT ON
INSERT Names(FName) VALUES('Aaron')
INSERT Names(FName) VALUES('Greg')
INSERT Names(FName) VALUES('Alex')
INSERT Names(FName) VALUES('Luan')
INSERT Names(FName) VALUES('John')
INSERT Names(FName) VALUES('Todd')
INSERT Names(FName) VALUES('Scott')
INSERT Names(FName) VALUES('Jess')
INSERT Names(FName) VALUES('Drew')
INSERT Names(FName) VALUES('Katherine')
INSERT Names(FName) VALUES('Paul')
GO
Alternativa 1: TOP anidados
SELECT TOP 1 FName
FROM
(
SELECT TOP 10 FName
FROM Names
ORDER BY FName
) sub
ORDER BY FName DESC
Alternativa 2: NOT IN
SELECT TOP 1 FName
FROM Names WHERE FName NOT IN
(
SELECT TOP 9 FName
FROM Names
ORDER BY FName
)
ORDER BY FName
Alternativa 3: "count derivado" se asume que FName is único
SELECT FName
FROM Names
WHERE
(
SELECT COUNT(*)
FROM Names n2
WHERE n2.FName <= Names.FName ) = 10
Alternativa 4: MAX
SELECT FName = MAX(FName) FROM
(
SELECT TOP 10 FName
FROM Names
ORDER BY FName
) sub
Alternativa 5: Uso de cursores
DECLARE FNames CURSOR
LOCAL STATIC READ_ONLY FOR
SELECT FName
FROM Names
ORDER BY FName
DECLARE @FName VARCHAR(32)
OPEN FNames
FETCH RELATIVE 10 FROM FNames INTO @FName
CLOSE FNames
DEALLOCATE FNames
SELECT FName = @FName
DROP TABLE Names
GO
Referencia
Monday, July 13, 2009
SQL - Borrar registros con Inner Join
El siguiente código es para borrar registros en una tabla "X" realizando un inner join con otra tabla "Y".
No olvidar utilizar control de transacciones (checar post próximamente a publicar)
DELETE t1
FROM table1 t1
INNER JOIN table2 t2 ON t1.<columna>=t2.<columna>
No olvidar utilizar control de transacciones (checar post próximamente a publicar)
Bienvenida
Este es el primer post del blog, duh!
Iba a comenzar a postear artículos pero decidí postear esto.
Aqui iré registrando conocimiento acerca de Programación, Bases de Datos y Problemas en general, relacionados con TI que vaya generando a lo largo de mi carrera como Ing. en Sistemas (Software).
Actualmente trabajo en una empresa de Servicios, como desarrollador, utilizando las siguientes herramientas: SQL Server 2000/2005, Visual Studio 2005 y VisionJade (Java).
Hace 5 años que egresé de la Universidad Atónoma de Chihuahua en México y he trabajado con lenguaje que van desde TurboC (en la prepa) a lenguajes mas avanzados como Ruby, sin embargo mi pasión verdadera son las Bases de Datos, he trabajado con Oracle, MySQL, pero siendo SQL Server mi DBMS favorito.
Bueno, una vez hecha la presentación, a postear se ha dicho!
Iba a comenzar a postear artículos pero decidí postear esto.
Aqui iré registrando conocimiento acerca de Programación, Bases de Datos y Problemas en general, relacionados con TI que vaya generando a lo largo de mi carrera como Ing. en Sistemas (Software).
Actualmente trabajo en una empresa de Servicios, como desarrollador, utilizando las siguientes herramientas: SQL Server 2000/2005, Visual Studio 2005 y VisionJade (Java).
Hace 5 años que egresé de la Universidad Atónoma de Chihuahua en México y he trabajado con lenguaje que van desde TurboC (en la prepa) a lenguajes mas avanzados como Ruby, sin embargo mi pasión verdadera son las Bases de Datos, he trabajado con Oracle, MySQL, pero siendo SQL Server mi DBMS favorito.
Bueno, una vez hecha la presentación, a postear se ha dicho!
Subscribe to:
Posts (Atom)