Cómo insertar valores en columnas Identity

Si intentas insertar (mediante algún software de sincronización de bases de datos o cualquier otro método) valores explí­citos en columnas marcadas como Identity, obtendrás este error:

Cannot insert explicit value for identity column in table 'MiTabla' when IDENTITY_INSERT is set to OFF

Para poder insertar valores especí­ficos en estas columnas, antes de realizar la inserción, corre esta sentencia SQL:

SET IDENTITY_INSERT MiTabla ON

Corre tu proceso de sincronización o inserción de datos, y no olvides al finalizar regresar la propiedad a su valor inicial, corriendo esta sentencia:

SET IDENTITY_INSERT MiTabla OFF

Cómo copiar un valor de un TextBox a otro usando ASP.NET y JavaScript

La situación es esta:

Tengo dos controles TextBox de ASP.NET en un formulario de captura. En la mayorí­a de los casos el usuario deberá capturar el mismo valor en ambos. Entonces quiero hacer que cuando el usuario capture el primer campo y brinque al segundo (en ese momento se dispara el evento onblur de JavaScript del primer campo) el valor capturado se copie automáticamente al segundo campo.

Para hacer esto hay que combinar el uso de ASP.NET con JavaScript de la siguiente forma.

Primero crea la función VB.NET que genera el código JavaScript:

  1. Public Function SetText(ByVal Control1 As Control, ByVal Control2 As Control) As String
  2.     'Genera codigo JavaScript que copiara el contenido del campo Control1
  3.     'al campo Control2 en el momento que el usuario salga (onblur) del Control1
  4.     Dim Script As New System.Text.StringBuilder
  5.     Dim ClientID1 As String = Control1.ClientID
  6.     Dim ClientID2 As String = Control2.ClientID
  7.     With Script
  8.         .Append("document.getElementById('")
  9.         .Append(ClientID1)
  10.         .Append("').value = ")
  11.         .Append("document.getElementById('")
  12.         .Append(ClientID2)
  13.         .Append("').value;")
  14.     End With
  15.     Return Script.ToString
  16. End Function

La función anterior puede ir en el código de tu página. Ahora, en el evento Page_Load puedes usarla así:

  1. MiTextBox1.Attributes.Add("onblur", SetText(MiTextBox1, MiTextBox2))

Código creado basándome en: http://www.mredkj.com/vbnet/TextboxScriptFunctions.html

Tres diferentes formas de hacer DataBind en ASP.NET 3

Existen tres formas de hacer DataBind en ASP.NET 3:

Eval. Es un DataBind en una sola dirección, lo que significa que obtiene el dato del DataSource pero si ocurre alguna modificación en el campo, no lo puede regresar al DataSource.

Ejemplo:

  1. <%#Eval("NombreDeLaColumna")%>

Bind. Es un DataBind de dos direcciones, lo que significa que obtiene el dato del DataSource y si ocurre alguna modificación en el campo, lo regresa al DataSource para su modificación.

Ejemplo:

  1. <%#Bind("NombreDeLaColumna")%>

Uso de una función. Es posible utilizar una función para mostrar un dato. Toma esta situación por ejemplo: En la tabla que estamos mostrando tenemos una llave foránea, que hace la relación con otra tabla. En vez de mostrar el ID numérico (por ejemplo 34) es mejor mostrar un campo alfanumérico, pero ese campo alfanumérico se encuentra en la otra tabla. Para accederlo puedes crear una función a la cual le des como entrada el ID numérico y regrese el valor alfanumérico legible para el usuario.

Ejemplo:

  1. <%# Funciones.ObtenDatoAlfanumerico(Eval("IdTabla")) %>

Es muy útil saber esto, sobre todo el tercer ejemplo.

Cómo restaurar una base de datos de SQL Server en otro servidor

Hace poco tuve que hacer un backup de una base de datos de SQL Server y restaurarla (restore) en otro servidor distinto.

Para hacer el respaldo (backup) en el servidor de origen, usando Microsoft SQL Server Management Studio Express, haces clic con el botón derecho en la base de datos y seleccionas Tasks -> Back Up...

backup.gif

Luego en la pantalla que aparece, seleccionas el tipo de backup llamado Full.

backupoptions2bis2.gif

El archivo de respaldo quedará guardado en la ruta que aparece bajo el título Destination.

Ahora descarga ese archivo al servidor donde vas a restaurar la base de datos. Por cierto, ya tiene que existir la base de datos (aunque esté vacía) para que puedas restaurar la información.

Ahora conectado al servidor destino, haz clic en la base de datos donde deseas vaciar la información y haz clic con el botón derecho y selecciona Tasks -> Restore -> Database...

restore.gif

Selecciona la opción From device, haz clic en el botón con los tres puntitos, selecciona el archivo que descargaste y verás esta pantalla (asegúrate de marcar la casilla bajo Restore):

restore3bis.gif

Ahora haz clic en Ok.

Si ves el siguiente error:

Error 3154: The backup set holds a backup of a database other than the existing 'xxxx' database

entonces haz clic en la página Options en el panel izquierdo y marca la casilla Overwrite the existing database:

restore4.gif

Y listo, con eso se restaurarán todos los elementos de tu base de datos original.

Actualización:
Lo que he visto es que el usuario que tení­as asignado a la base de datos se corrompe. Simplemente crea otro usuario con un nombre distinto y vuelve a asignarle el ownership y los permisos a la base de datos, y listo.

Cómo insertar un valor nulo (null) en SQL Server

A veces es necesario insertar un valor nulo (null) en una base de datos de SQL Server usando ASP.NET.

Esto puede ocurrir ya sea en un insert o un update.

Suponiendo que el tipo de datos en la base de datos es un smallint y sabiendo que en ASP.NET corresponde a un tipo de datos Int16, ésta es la manera de declarar un entero nulo:

Dim EnteroNulo As Nullable(Of Int16) = Nothing

Y listo, ahora lo puedes usar en tu DAL o BLL:

Dim RenglonesAfectados As Integer = Adapter.ModificaTabla(Fecha, EnteroNulo)