sábado, junio 28, 2008

Crear fichero XML con LINQ

Hola a todos, estoy peleándome estos días con Linq para XML y os publico este mini-artículo para que no tengáis problemas a la hora de crear un fichero XML con Linq. Os preguntareis ahora que para que queremos usar linq si podemos hacerlo con DOM o a mano. En mi caso he preferido usa linq porque vengo del mundo SQL y veo mucho más clara la búsqueda de datos al estilo SQL que montando complejas cadenas con XPath para buscar un dato o 4 datos de un fichero XML. Como lo he visto más fácil así, me he tirado al ruedo y me sale esto:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;


class Program
{

static void Main(string[] args)

{
//Creamos un XDocument.
//Un XDocument contiene el XML completo, y
//le añadimos un nodo raiz, en este caso del de clientes.
XDocument configuracion = new XDocument(
new XDeclaration("1.0", "UTF-8", "yes"),
new XElement("Clientes"));

//Ahora nos situamos en el nodo Clientes
XElement lastAddress =
(configuracion.Descendants("Clientes").Last());

//Añadimos uno nodo nuevo que representa un cliente
XElement nodo = new XElement("Cliente");

//Lo identificamos por su codigo de cliente
XElement elemento = new XElement("Cod001");
//y le añadimos un par de atributos
elemento.SetAttributeValue("Nif", "B12345678");
elemento.SetAttributeValue("Nombre", "Neumáticos SV S.L.");
nodo.Add(elemento);

//Lo añadimos al nodo principal de clientes

lastAddress.Add(nodo);

//Repetimos el proceso para otro cliente.

nodo = new XElement("Cliente");
elemento = new XElement("Cod002");
elemento.SetAttributeValue("Nif", "A1234568");
elemento.SetAttributeValue("Nombre", "Coches Noaveriados S.A.");
nodo.Add(elemento);
lastAddress.Add(nodo);

//Guardamos el fichero xml.

configuracion.Save("C:\\Clientes.XML");

}


}

martes, junio 24, 2008

RECUPERAR UNA BD SIN LOG DE TRANSACCIONES

Si tienes una bd que no puedes adjuntar por el error 3624 o porque ha desaparecido el log o porque el log está cascado, puedes seguir los siguientes pasos para recuperarla:

1.- Ejecutar el siguiente bloque de instrucciones:
use master
sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
GO
2.- Luego este:
BEGIN TRAN
UPDATE master..sysdatabases
SET status = status | 32768
WHERE name = 'Nombredelabasededatos'
IF @@ROWCOUNT = 1
BEGIN
COMMIT TRAN
RAISERROR('Modo Emergencia', 0, 1)
END
ELSE
BEGIN
ROLLBACK
RAISERROR('Error: no se puede pasar a modo Emergencia', 16, 1)
END
GO

3.-Ahora este:
sp_configure 'allow updates', 0
RECONFIGURE WITH OVERRIDE
GO

4.-Reinicia el servicio de SQL Server.

5.-Por último reconstruiremos el LOG:
DBCC REBUILD_LOG('tubasededatos','C:\MSSQL\DATA\tubasededatos.ldf')
ALTER DATABASE LaBaseCorrupta SET MULTI_USER
GO

Espero que arregle algún que otro problema como me lo acaba de arreglar a mí hace 5 minutos.

domingo, junio 22, 2008

Truco CheckedListBox

Ayer se me planteó un problema de fácil y extraña solución. Necesitaba un CheckedListBox y lo tenía que llenar con los datos leídos de una tabla, así que me puse manos a la obra y voilà, el Intellisense de Visual Studio 2008 no me muestra ningún binding ni ningún DataSource, por lo que me puse a buscar en la red y encontré esto:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=474442&SiteID=1

En resumen, aunque el intellisense no nos muestre algunas propiedades, podemos estar tranquilos, puede que existan si el control tiene como padre otro control como es en este caso el ListBox y que podemos poner sin problemas:

myCheckedListBox.DataSource=myDataSource;
myCheckedListBox.DisplayMember="Name";
myCheckedListBox.ValueMember="Code";

Os aconsejo que reviséis la documentación del control en la MSDN antes de utilizarlo:
http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox_members.aspx

aunque no siempre sea correcto, ya que si buscáis en este link que también es de MSDN podéis ver que dice:
"Nota No es posible enlazar datos a CheckedListBox. Utilice ComboBox o ListBox en su lugar para esto. Para obtener más información, vea Cómo: Enlazar un control ComboBox o ListBox de formularios Windows Forms a datos."

¿Curioso no?

Etiquetas

.net (1) ALGORITMO (4) algoritmos (1) Android (1) angular (2) aplicaciones WEB (1) ARGENTINA (1) ASP (4) asp .NET (1) ASP .NET Identity (1) attach (1) Azure (1) base de datos (1) BINDING (1) BioInformática (2) bootstrap (1) C (2) C# (27) castellano (1) catalán (1) Charla (1) CheckedListBox (1) Clase (1) clausura transitiva (2) CLIENTES (1) Closing (1) Combobox (1) Comisiones (1) CONCURSO (1) condones (1) consultas (1) corrupta (1) CORS OWIN (1) CORS WEB API 2 (1) Criptografía (1) CUENTA NARANJA (1) Custom Control (1) Daniel Seara (1) DATAGRIDVIEW (1) David Salgado (2) dendrograma (6) depurar (1) desarrollo (1) Deserializar (1) DEVCAMP (2) durex (1) e-DNI (1) el Guille (2) Eladio Rincón (1) elGamal (1) encriptación (1) encuesta (1) Entidad (1) ERROR (2) error 3624 (1) España (1) España es nido de víboras. (1) Euclides (1) Euclides extendido (1) evento (1) eventos. (1) factorización (1) factorizar (1) física (1) Framework 2.0 (1) Framework 3.5 (5) Framework 4 (2) Francisco González (1) Francisco Ruiz (1) GO (1) google (1) gossip (1) Grupos de usuarios (1) Guadalajara (1) Guille Comunity Tour (2) Gusenet (9) GUSENET. (1) Huelga informáticos (1) IBEX 35 (1) Idioma (1) IFT (1) IISExpress (1) Indice de Fuerza Tecnica (1) informática (1) Informix (1) ING DIRECT (1) INGDIRECT (1) Ingeniería Informática (2) Inteligencia artificial (5) Intro (1) IOS (1) IPad (1) IPhone (1) IV Aniversario (1) JavaScript (2) JPA (2) keybd_event (1) LA CAIXA (1) La Pineda (1) ladroentidad (1) Lector RSS (2) LINQ (5) LINQ2XML (1) ListBox (1) Live Distributed Objects (1) llenar (1) LOG (1) Madrid .NET (1) MainMenu (1) MAP (1) MAP 2011 (1) MAR DEL PLATA (1) matemáticas (1) Matriculación (1) MDIList (1) MdiWindowsListItem (1) MenuItem (1) MenuStrip (1) Microsoft (18) Microsoft Active Professional (1) Miguel Egea (2) MSDE 2 (1) MSDE 2000 (1) MVVM Light (2) mysql (1) NAMESPACE (1) Needleman (2) NET (1) NS (1) Oferta empleo (1) Office 14 (1) Office 2007 (1) Office 2009 (1) ON ERROR (1) OOB (1) Oscar Montesinos (1) OWIN (1) OWIN Security middleware (1) Paginación (1) PDC (1) Pedro Hurtado (1) PINTARTECA (1) PrinterSettings (1) Process (1) ProcessStartInfo (1) Programador (1) Relacional (1) robo (1) RSS (1) Rubén Garrigós (1) Salvador Ramos (1) Santa Pola (1) scrape (1) scraping (1) ScrollBar (1) Secretaría (1) SendInput (1) SENDKEYS (1) Sergio Vázquez (1) Serializar (1) Silverlight 2.0 (2) Silverlight 4 (1) Silverlight 5 (3) Silverlight. (1) Sindicado (1) Sistema Personal de Trading (3) Sistemas Distribuidos (1) SOLID SUMMIT 2009 (1) SPT (2) SQL Server (3) SQL Server 2000 (2) SQL Server 2005 (2) SQL Server 2008 (3) SQL Server Denali (1) SQL Server Information Services. (1) SQLU (1) SSIS (1) SUMMIT SQL (1) Suspect (1) Syndication (1) TAB (1) Tablas (1) Tarragona (1) Token bearer (1) ToolStripMenuItem (1) ToString() (1) Traductor (1) transacciones (1) treeview (1) truco (1) TRY CATCH (1) UCI (1) Unience (2) Universad (1) Universidad Oberta Catalunya (2) UOC (8) Usuarios. (1) VB (1) VB6 (1) VB9 (1) VIAJAR (1) Vila-seca (1) VISUAL BASIC (3) Visual Basic. (1) visual studio (1) Visual Studio 2005 (1) Visual Studio 2008 (16) Visual Studio 2010 (2) Visual Studio 2013 (1) VS2010 (1) VSTA (1) VSTO (1) WCF (1) WEB API (1) web.config (1) WebClient (1) WF (1) windows (1) Windows 7 (3) Windows 8 (2) Windows Azure (1) Windows pone (1) Windows Server 2008 (1) Windows Vista (1) woff (1) WP7 (1) WPF (1) Wunsch (2) XAML (4) XDocument (1) XElement (1) XML (3) XNA (1) Yield (2)