domingo, 12 de diciembre de 2010

De Notepad a Wordpad

En este pequeño post voy a continuar con el desarrollo de la aplicación notepad para .NET utilizando los demás ControlDialogs y añadiéndole más funcionalidades. Para ello he cambiado el control Textbox por un control RichTextbox, que además de las típicas funcionalidades del control Textbox añade muchas más propiedades que nos permitirán cambiar cosas como el color del texto, añadir imágenes,… y así nuestra aplicación se parecerá más a un procesador de textos tipo Word. A parte está el tema de la impresión que no es fácil, ya que aquí no se vale arrastrar el control al formulario, cambiar 3 o 4 propiedades y ya funciona. El tema es un poco complicado porque de lo que se trata es que el texto se imprima dentro del área de impresión y no se vaya por los márgenes, y a parte está el tema del color, que a ser posible no se imprima todo en un único color.
Si ya nos vale con que se nos vaya el texto por los márgenes y se imprima todo en negro, tan sencillo como añadir un control PrintDocument al formulario y en el evento Print_Page añadir el siguiente código:
Private Sub PDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PDoc.PrintPage
e.Graphics.DrawString(RichTextBox.Text, RichTextBox.Font, Brushes.Black, e.MarginBounds.Left, RichTextBox.Font.GetHeight(e.Graphics))

End Sub
En el soporte técnico de Microsoft ofrecen una buena alternativa que es la de extender el control RichTextBox creando una clase llamada RichTextBoxPrintCtrl, que hereda de la clase RichTextBox y que tiene un método Print que nos permitirá imprimir el contenido del RichTextBox. En el proyecto que se adjunta está implementado de esta manera -y así me quedo tan ancho y con un problema menos- y en http://support.microsoft.com/kb/811401 está el código y más documentación.

A parte para rizar más el rizo quiero trabajar con un formulario MDI, es decir, un formulario padre con varios subformularios hijos en su interior. Esto complica el tema ya que estás trabajando con varios formularios hijos y hay que identificar el formulario hijo activo con el que estás trabajando.
Para ello añado al proyecto un formulario llamado Form1, al que le arrastro el control RichTextBoxPrintCtrl y que tendrá definidas las propiedades y los eventos necesarios que yo utilizaré cuando cree una instancia del formulario Form1. Para ello cada vez que se cree un nuevo formulario hijo llamaré al método CrearForm() que me devolverá un objeto Form1 y como vemos el valor de su propiedad texto será “Sin título-“ concatenado a un número que será sumarle 1 al valor almacenado en la propiedad P_ChildFormNumber.


Private Function crearForm() As Form1
' Crea una nueva instancia del formulario secundario
Dim ChildForm As New Form1
' Lo Convierte en un elemento secundario de este formulario MDI antes de mostrarlo.
ChildForm.MdiParent = Me

P_ChildFormNumber += 1
ChildForm.Text = "Sin título-" & childFormNumber.ToString()
Return ChildForm
End Function

A parte quiero añadir en el Formulario Form1 la funcionalidad de poder arrastrar un documento al formulario y que éste se me abra en el RickTextBox. Esto se consigue manejando los eventos DragEnter y DragDrop del control RickTextBox con código siguiente:
Private Sub richTextBox_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles RichTextBox.DragEnter
If (e.Data.GetDataPresent(DataFormats.Text)) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If

End Sub

Private Sub richTextBox_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles RichTextBox.DragDrop
Dim i As Integer, s As String

' Obtener la posición inicial para pegar el texto.
i = CInt(RichTextBox.SelectionStart)
s = RichTextBox.Text.Substring(i)
RichTextBox.Text = RichTextBox.Text.Substring(0, i)

' Pegar el texto en el Richtextbox
RichTextBox.Text = RichTextBox.Text + _
e.Data.GetData(DataFormats.Text).ToString()
RichTextBox.Text = RichTextBox.Text + s

End Sub

El método richTextBox_DragEnter se llama cuando el usuario arrastra un documento al control RichTextBox y si el formato del documento es texto los datos se copiarán en el destino de colocación, el RickTextBox. Cuando se llama al método richTextBox_DragDrop es para pegar el contenido del documento en el control RichTextBox.


Otro tema es el programar que cuando se llame al Paint, se cree un archivo temporal y se abra con el Paint. Una ver el usuario cierre el Paint y guarde los cambios la imagen se añadirá al control RichTextBox. En la imagen se ve que cuando el usuario haga clik en Paint se ejecutará un código como el siguiente:

Dim rutaimagen As String = System.IO.Path.GetTempFileName()
Dim bitmap As New Bitmap(250, 250, Imaging.PixelFormat.Format32bppArgb)
Dim g As Graphics = Graphics.FromImage(bitmap)
Dim s As New SolidBrush(Color.White)
g.FillRectangle(s, 0, 0, 250, 250)
bitmap.Save(rutaimagen)

' Llamo al Paint con los argumentos puestos de esta forma porque sino en

' Windows XP no me reconoce los parámetros que contienen la ruta de la imagen
Dim paint As Process = Process.Start("mspaint.exe", """" & rutaimagen & """")

' Espero hasta que el usuario acabe
paint.WaitForExit()
' Anado la imagen al RichTexbox
If (Not Me.ActiveMdiChild Is Nothing) Then
Dim cajatexto As RichTextBox = CType(Me.ActiveMdiChild.ActiveControl, RichTextBox)
' Me aseguro de hacer un dispose con el End Using
Using imagen As Image = Image.FromFile(rutaimagen)
Clipboard.SetImage(imagen)
cajatexto.Paste()
Clipboard.Clear()
End Using
End If
' Elimino el fichero temporal creado
System.IO.File.Delete(rutaimagen)

Como siempre cuelgo el código por si alguien le mola el tema y está disponible aquí. Así con un sencillo “Copy-Paste” puedes adaptar este editor de texto profesional a varios tipos de aplicaciones y de formatos de archivo y aún más útil sería crearse una plantilla del proyecto. De esta manera tardarás menos en crear tus aplicaciones ya que para proyectos similares tendrás la estructura lista y no perderás el tiempo en diseñar una y otra vez todo desde 0.

Me queda por comentar lo que se refiere a localización y globalización, es decir, hacer que la interfaz de nuestra aplicación esté disponible en varios idiomas y se pueda cambiar de idioma de una forma muy sencilla. Localización y globalización lo explicaré con un sencillo vídeo donde demostraré como una misma aplicación puede tener el texto de los controles en varios idiomas (en el caso de la aplicación wordpad verás que están disponibles los idiomas castellano, catalán e inglés) sin necesidad de crear 3 formularios diferentes –cosas que a veces he visto en producción y para mantener eso te puedes volver loco-.

viernes, 5 de noviembre de 2010

Depurar, generar, publicar en el IIS y crear un proyecto de instalación en .NET

Hola, hoy voy a hablar sobre de tema de los pasos para generar y publicar una aplicación de escritorio de Windows Forms en VB.NET y luego explicaré cómo añadir un proyecto de instalación a nuestra solución que nos permitirá crear un instalador más profesional para repartirlo a los usuarios finales.
Como vemos en el menú Generar de Visual Studio tienes varias opciones: generar toda la solución o generar el proyecto seleccionado, según si tenemos seleccionada toda la solución o tenemos seleccionado un único proyecto. A diferencia del menú depurar -donde está ‘Iniciar Depuración’ (F5)- ahora lo que no voy a hacer es corregir los posibles errores lógicos e ir poniendo ‘Breakpoints’ para que el programa se detenga en un determinada línea de código y yo inspeccione el valor de una determinada variable, por ejemplo, esto se supone que ya lo he hecho. Lo que quiero es que se genere el ‘ejecutable’ en la carpeta bin –ejecutable que difiere mucho de los .exe que se generaban con VB6 ya que aunque tenga extensión .exe sin NET Framework no funciona-, y para eso está la opción de Generar.


Si vamos a la carpeta bin/Release a parte del archivo ejecutable y alguna dll necesaria hay muchos más archivos que se nos han creado.
Por el contrario si lo que quiero es repartir nuestro proyecto a terceras personas para eso está la opción de Publicar. Al hacer click en Publicar se iniciará el asistente de publicación que nos pedirá la ubicación donde se publicará nuestra aplicación y en esa localización se nos generará una carpeta con los archivos necesarios y además un manifiesto de aplicación y un manifiesto de implementación. El manifiesto de aplicación describe la aplicación en sí, incluidos los ensamblados, las dependencias y los archivos que constituyen la aplicación, los permisos para ejecutar la aplicación y la ubicación en que estarán disponibles las actualizaciones, si las hay. En el manifiesto de implementación se describe la forma de implementar la aplicación, incluida la ubicación del manifiesto de aplicación y la versión de la aplicación. Para ello se usa la tecnología ‘ClikOnce’ para conseguir que las aplicaciones de escritorio sean tan fáciles de instalar, actualizar y seguras como son las aplicaciones Web y se pueden publicar sin ningún problema en un Servidor Web para que esté disponible para todos los usuarios.


De hecho a efectos didácticos nuestra aplicación se va a publicar en el IISS, en el servidor web que viene con Windows y que nos sirve para publicar y testar páginas asp y aspx antes de pasarlas a producción. Si abrimos el Internet Explorer o el Mozilla y escribimos http://localhost/podemos comprobar si está instalado. Una vez publicada la aplicación en el IIS -o en cualquier otro servidor web- con tal de escribir en el navegador http://[dirección_del_servidor]/[nombre_del_proyecto]/publish.htm iremos a la página para instalar la aplicación usando 'ClickOne'. Nunca fue tan fácil publicar aplicaciones de escritorio y que otros usuarios las instalen sin los problemas que planteaba la instalación de aplicaciones en VB6. Es muy importante si vas a publicar tu aplicación en el IIS que aparte de tener instalado el ISS que ejecutemos el Visual Studio como administrador, ya que sino fallará el proceso.
Pero también hay otra alternativa: para un resultado más profesional está la creación de un Proyecto de instalación que nos permitirá crear un instalador profesional para nuestra aplicación e ideal para repartirlo a otros usuarios. Muchos programas se distribuyen con un instalador tipo InstallShield, que al ejecutarlo aparece un asistente con varias pantallas en la que se te da la bienvenida, se te pide que aceptes una licencia, se te pregunta por el directorio en el que quieres instalar tu aplicación y una vez configurado todo, se instala la aplicación y se crean los accesos directos. Con Visual Studio 2010 es posible crear un proyecto de instalación y configurar todas estas características de una forma muy fácil y con gran cantidad de opciones.
Pues esto es lo que vamos a explicar en el siguiente vídeo.


Pues en próximos post acabaré el desarrollo de la aplicación de escritorio wordpad usando el resto de los DialogControls como el de vista previa de impresión, el de imprimir y el de cambiar el color de texto y a para ello prescindiré del control Textbox y lo sustituiré por el control richtextbox que ofrece muchas más posibilidades y nos permitirá trabajar con texto enriquecido.

miércoles, 15 de septiembre de 2010

Cuadros de diálogo en .NET (Dialog Controls)

Buenas después de un pequeño periodo de ausencia, en este post voy a volver a mundo de .NET explicando unos controles que harán que nuestras aplicaciones sean más profesionales: son los DialogControls o cuadros de diálogo y de paso haré un repaso al uso de menús en .NET (muy muy sencillo).
Con esto volvemos al tema de la programación, que quiero que también tenga protagonismo. Últimamente estoy liado programando aplicaciones para conseguir automatizar procesos contables y financieros, sobre todo creando sitios web aspx. De hecho a día de hoy tiene grandes ventajas ya que no hace falta un ordenador con mucho hardware para que funcione. Simplemente con tener un explorador web ya es más que suficiente ya que tú envías html, ese html se procesa en el servidor, y recibes html con el resultado. Nada más simple y por eso cada vez es lo más demandado ya que con una inversión relativamente pequeña se consigue un gran ahorro de tiempo en tareas repetitivas.

Afortunadamente puedo compaginar mis dos pasiones: programación y empresa. Ya que ser un mero contable a día de hoy está muy mal visto por la sociedad. Parece que somos gente antipática, desprestigiada y que vivimos en una era analógica. Eso es mentira: mira mi blog aquí, creo que de los temas que estoy tratando no sean muy anticuados. Para muchos la contabilidad no es más que un gasto que se trata de reducir a la mínima expresión. El problema es que lo reducen tanto que cuando se dan cuenta de la importancia de la contabilidad ya es demasiado tarde y tienen que chapar el “chiringuito”. Otros consideran que esto lo puede hacer hasta los niños y que incluso con un cursito de 3 mesesitos ya vale. Este segmento de población tiene una enfermedad llamada "titulitis", es decir, hacer cursos en los que no aprenden nada, por el hecho de conseguir un título que colgar en la pared y/o poner en un currículum. Esta enfermedad está en auge con las crisis económica ya se piensan que haciendo cursos van a encontrar esa ansiada estabilidad laboral. El problema es que lo uno no implica necesariamente lo otro, y aún menos en España. Para empezar muchos de nuestros gobernantes no tienen ni la E.S.O., las Universidades, que tan progres son para lo que les conviene, ahora son verdaderos conventos donde nadie levanta la voz viendo como el activo intangible más importante que tiene este país, los universitarios, van derechitos a la cola del paro y sin pararse a plantear en qué nos estamos equivocando; y el país está tendiendo hacía una decadencia vulgar donde parece que todo vale. Pues bien dejemos de rajar que me enciendo…

Pues bien, quizás te has dado cuenta que al trabajar con varios tipos de aplicaciones de escritorio, incluso desarrolladas por empresas diferentes, si abres un archivo, lo guardas o lo imprimes aparece el mismo cuadro de diálogo. Esto es debido a que los programadores para evitar tener que duplicar código, en lugar de escribir líneas y más líneas de código repetitivo para desarrollar esa funcionalidad sencillamente cogen y utilizan estos controles. Ahora en Visual Studio .NET ya no hay que agregar un componente al proyecto (el componente Microsoft Common Dialog Controls que se usaba en VB6) sino que basta arrastrar al formulario y configurar las distintas propiedades. También se puede hacer creando un objeto de la clase, por ejemplo, OpenFileDialog -para que aparezca el cuadro de diálogo de abrir un archivo-, ColorDialog - el cuadro de diálogo de cambiar color-,… Podemos configurar las propiedades que necesitemos y llamar el método ShowDialog() cuando el usuario pulse el botón Ok con el siguiente código:

If OpenFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK
Then
'código para leer el archivo
End If


Bueno todo esto lo explicaré con un video y como siempre el código está disponible en este link.

Pues bien en siguientes entradas desarrollaré una aplicación simular ahora al Wordpad, pero con un formulario MDI y así poder trabajar con varios formularios hijos.

miércoles, 25 de agosto de 2010

Servicio impresión modelo 202

Buenas en este post voy a continuar con el tema del modelo 202 del pago fraccionado del Impuesto sobre Sociedades y de la Renta de No Residentes. Hasta el cambio del modelo que supuso la unificación del modelo 220 y del 202 en uno de sólo, en la página de la AEAT había la posibilidad de descargar un pdf que se podía rellenar e imprimir y que era de utilidad a efectos de tener una copia con la que ir al banco a solicitar el NRC.
Lo que ha pasado es que ahora para obtener el pdf hay que ir a la dirección https://www2.agenciatributaria.gob.es/es13/h/ie02020b.html y rellenar el formulario para obtener el pdf del modelo 202 ya cumplimentado y validado. Pero, no podía ser tan fácil, ya que para las empresas que han de presentar obligatoriamente este modelo por vía telemática (S.L. y S.A.) a la hora de obtener el pdf te dice que nanay, es decir, todo el gozo en un pozo. Se puede hacer la chapucilla de poner el nif, nombre y apellidos inventados, obtener el pdf y después cambiarlo a bolígrafo, cosa que es un poco cutre. Por ahora la solución que he encontrado y con unos resultados idénticos a la creación de un Excel con macros como hice con el modelo 115 o una aplicación profesional como estoy haciendo con el 303, es crear un pdf editable con un mínimo de validación y que se pueda rellenar e imprimir fácilmente. De hecho en Bizkaibai utilizan mucho esto de los pdf editables para las presentaciones de impuestos y el resultado es óptimo. Pues bien lo dejo para descarga libre aquí por si hay alguien que se ha encontrado con el mismo problema. Hay una 2ª versión con algunos campos calculados que ayudan a su cumplimentación disponible aquí.

domingo, 15 de agosto de 2010

Impuesto sobre Sociedades 2009 práctico

Buenas en este post voy a tratar un tema bastante complicado. Se trata del Impuesto sobre Sociedades, pero no desde una óptica teórica sino desde un punto de vista práctico. Ya sé que voy un poquito mal de tiempo, ya que si la fecha de cierre del ejercicio fue el 31/12/2009 el plazo máximo para presentar el Impuesto sobre Sociedades era los 25 días siguientes a los 6 meses posteriores a la fecha de cierre. En pocas palabras el 25/07/2010 que como cayó en domingo y se pasó al 26/07/2010. Pero he preferido dejar esta entrada para agosto y no en plena campaña de impuestos –primero las obligaciones y luego las aficiones-. De hecho esto no tiene porque ser siempre así. Hay empresas que, por ejemplo, debido a su gran volumen de actividad en época navideña deciden no cerrar a 31/12 sino en otra fecha. Si cierran a 31/03/2010 el plazo máximo para presentar el IS 2009 sería el 25/09/2010 (es decir que aún estarían a tiempo). Es más las empresas que cierran a 31/08 está estudiado que el importe de los pagos fraccionados del modelo 202 es inferior (siempre que el cálculo del pago fraccionado se haga a través de la modalidad del artículo 45.2 L.I.S.).

Pues bien vamos al grano. Parto del balance de situación y la cuenta de pérdidas y ganancias de la empresa Under Pressure, S.L. a 31/12/2009. Esta empresa es ficticia -como las previsiones del FMI- y la he creado sólo para efectos didácticos. Este ejemplo se basa en uno similar de la asignatura de análisis financiero, ya que de otro modo llevar una contabilidad ficticia y presentar una declaración basada en datos ficticios está tipificado en la Ley General Tributaria como delito fiscal, con una repercusiones bastante graves entre las que están penas de prisión.

La contabilidad es sencilla: tiene compras, ventas, el pago de los suministros, el pago del alquiler del local y la nómina de un empleado. Para ilustrar más el ejemplo aquí está disponible el balance de situación y la cuenta de pérdidas y ganancias, que será de lo que partiremos para calcular el IS. Pues bien procedemos a cerrar la contabilidad del 2009 con el asiento del impuesto sobre beneficios a 31/12/2009. Es el 25 % (al ser una Pyme) del Resultado antes de impuestos:

La contabilidad del 2009 de esta empresa está disponible aquí ya con el asiento del IS contabilizado.
De está manera puedo abrir el ejercicio 2010 y el programa de contabilidad me creará la cuenta 120.2009, donde tendré el resultado del 2009, ya después de impuestos, listo para ser distribuido en 2010.

Si consulto el siguiente esquema ya podría legalizar los libros con el programa Legalia que está disponible para descarga en el siguiente enlace.

Hay que tener claro que según el tamaño del patrimonio de la empresa, los resultados y el número medio de trabajadores las cuentas anuales se pueden formular en el modelo normal, abreviado o Pymes (y esto también se aplica para el Impuesto sobre Sociedades). El cuadro resumen es el siguiente y vemos que si no se superan los límites las cuentas anuales se pueden formular en el modelo Pymes o en en el Abreviado, sino en el modelo Abreviado y para las empresas de gran tamaño está el modelo Normal.

En contabilidad a 30/06/2010, fecha de la aprobación de las cuentas anuales y de la aplicación del resultado, tengo el siguiente asiento en el que doto toda la reserva legal y el resto lo llevo a reservas voluntarias. En este punto podrían haber más opciones: distribuir dividendos, compensar pérdidas de ejercicios anteriores, ...

Pero hay gente que estos dos asientos no los hacen hasta que calculan el IS, ya que luego hay que tener presente que el impuesto sobre el Beneficio no es fiscalmente deducible y supone una diferencia permanente positiva. Pero para mí hacerlo así es más cómodo, ya que así tengo ya cerrado el ejercicio 2009 y puedo ir legalizando los libros. Pues bien ahora ya vamos a lo práctico, que es a partir del balance de situación, la cuenta de pérdidas y ganancias y el programa de ayuda de la AEAT cumplimentar la declaración del Impuesto sobre Sociedades del 2009, donde explicaré algunos truquillos interesantes.




Analisis del Impuesto sobre Sociedades 2009 from Raúl González on Vimeo.

Después de presentar el impuesto sobre sociedades lo último que queda cada año es el depósito de las cuentas anuales en el Registro Mercantil hasta el 31/07/2010. Para ello está el programa D2 que nos permite tal fin, aunque hay otras soluciones en el mercado totalmente integradas -o también se pueden programar- para evitar tener que escribir una y otra vez los mismos datos.

En siguientes post volveré al mundo de la programación con el modelo 303, que por ahora lo estoy desarrollando en ASP.NET, pero no descarto realizar algún desarrollo similar en PHP y tengo la intención de explicar algunos controles útiles que permitirán desarrollar aplicaciones aún más profesionales.

lunes, 19 de julio de 2010

Mysql .NET Connector

Buenas, continuamos con un tema interesante.
Yo siempre he dicho que uno no ha limitarse a conocer una única tecnología (ya lo que suele ocurrir es que en todos los sitios no trabajen con esa tecnología), sino hay que saber un poco de todo y no casarse con un determinado programa, lenguaje o tecnología. Es más la obsolescencia puede hacer que si te centras en aprender una única tecnología, puede ocurrir que veas que cada vez es menos demandada por el mercado y tus conocimientos queden desfasados por el mero paso del tiempo. Por ejemplo a día de hoy es difícil encontrar aplicaciones escritas Turbo Pascal, por ejemplo, cuando hará 20 años sería el no va más en lenguajes de programación. Otra cosa es que en la facultad sólo se enseñe Turbo Pascal y nada más. Ni Java ni .NET y luego has de aprender esos lenguajes a marchas forzadas, pero eso es normal. Si yo te contará... Acabé económicas sin saber sin saber ni liquidar un Iva...


Bueno, voy a la chicha. Crear aplicaciones en Visual Studio 2008 y conectarse a una base de datos utilizando otro proveedor de datos de .NET Framework distinto a SQL Server siempre ha sido posible. De hecho si no me equivoco, por ejemplo, en la Diputación de Álava existe una aplicación para la confección de impuestos desarrollada usando el Visual Studio 2008 (lo deduzco porque pide instalar el .NET Framework 3.51), pues bien usa una base de datos Access y se conecta a través del proveedor de datos de .NET Framework para OLEDB. No es que sea tan óptimo como usar una base de datos SQL, pero funciona a la perfección.
Pues bien existe también el proveedor para MySql, con el que conectarse a bases de datos en MySql y es gratuito. De hecho viene una versión con un instalador que automáticamente te configura el Visual Studio (por ahora sólo hasta el Visual Studio 2008, ya que para el 2010 se liberará en breve), y aparte está la versión con el código y la dll. Anteriormente conectarse a MySql a través de del Visual Studio no era muy eficiente, ya que se había de utilizar el proveedor genérico, es decir, ODBC. A diferencia ahora el proceso es tan sencillo como escribir correctamente la cadena de conexión. Podemos crear incluso datasets tipados y aprovechar todas las ventajas que nos proporcionada el acceso desconectado a datos (pero LINQToSql no funciona) al igual que hacemos con bases de datos en SQL Server.
Pues bien en el siguiente video no sólo voy a explicar cómo crear una aplicación en Visual Studio que se conecte a MySql, sino que voy a explicar desde 0 la descarga de MySql, configuración, creación de una base de datos.





Pues bien, si añadimos a la aplicación un Archivo de configuración de aplicaciones llamado app.config, que no es más que un archivo xml, en que además de configurar un montón de opciones de la aplicación, nos permite almacenar cadenas de conexión y así en el caso que algún día necesitemos tener que cambiar el proveedor de datos y la cadena de conexión, por ejemplo, sería tan sencillo como cambiarlo en el archivo app.config y estos cambios se aplicarán a toda la aplicación -siempre que utilicemos los datos del archivo app.config y no una cadena de conexión en cada formulario porque puede ser un caos para mantenimiento de la aplicación-.

Es más, gracias a las clases del Namespace System.Data.Common podemos hacer que el código de la aplicación sea independiente del proveedor de datos. Que es Oracle hoy pero mañana será MySql, pues ningún problema, y así escribimos código independiente del proveedor de datos, por lo que si algún día cambia, con sólo cambiar una línea en el nodo ‘connectionStrings’ del archivo app.config la aplicación ya estará preparada.

Pues bien aquí el link con el código de la solución con los 2 proyectos realizados.

Ahora un poco del código de una aplicación para Windows en C# que se conecta a una base de datos llamada db, que está en MySql, pero también está preparado para conectarse a la misma base de datos db en SQL Server, por si el cliente algún día decide cambiar.
Primero en el archivo app.config tendríamos 2 cadenas de conexión, una para cada proveedor:









Por ahora sólo uso la de MySql. Y en el evento Load de mi formulario obtengo la cadena de conexión y el nombre del proveedor que almaceno en 2 variables cadena.
Imports System.Data.Common
Imports System.Configuration
'obtengo el nombre y el proveedor
Dim proveedor As String = ConfigurationManager.ConnectionStrings("CadenaConexion").ProviderName
Dim cadena As String = ConfigurationManager.ConnectionStrings("CadenaConexion").ConnectionString

'creo una factoría de base de datos para trabajar con el proveedor de datos que queramos
Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(proveedor)
'creo la conexion
Using conexion As DbConnection = factory.CreateConnection()
'asigno la cadena
conexion.ConnectionString = cadena

'creo un comando
Dim comando As DbCommand = conexion.CreateCommand
comando.CommandText =
"select * from clientes"

'creo el dataadapter
Dim da As DbDataAdapter = factory.CreateDataAdapter
'selecciono el SelectCommand

da.SelectCommand = comando
Dim ds As New DataSet
'relleno el dataset no tipado
da.Fill(ds)

'muestro los datos en el datagrid
DataGridView1.DataSource = ds.Tables(0)

End Using

sábado, 3 de julio de 2010

Novedades Verano

Hoy voy a tratar varias novedades que han aparecido recientemente:

1ª Desde el punto de vista fiscal, es el programa de ayuda para el impuesto de sociedades 2009 de la AEAT. Como sabemos aquellas empresas que cerraron su ejercicio a 31/12/2009 tienen de plazo hasta el lunes 26 de julio. Eso se suma a que el 20 de julio es el plazo máximo para los impuestos de 2º Trimestre o 6M. No olvidemos que para la Diputación Foral de Bizkaia (Bizkaibai), el Gobierno de Navarra, Guipúzcoa y la Diputación de Álava tienen sus propios programas para el IS. En el caso que el volumen de facturación en el 2009 superara los 7.000.000 € presentarán un impuesto a cada administración en proporción al volumen de operaciones realizadas en cada territorio. Bueno ya hablaré más sobre el IS en un post exclusivo.
Bueno este es el link a la página de descarga del programa.


2ª La nueva versión de Visual Studio 2010, cuyas versiones Express en varios idiomas, entre ellos español, están disponibles en http://www.microsoft.com/express/downloads/. A parte se puede descargar una ISO con todas las versiones Express en la misma página. Además necesitaras el SQL Server 2008 R2 Express sí o sí, indistintamente tengas instaladas otras versiones superiores de SQL Server, para poder adjuntar bases de datos a tus proyectos y crear las instancias de usuario (lo de User Instance = true).


3ª La versión 6.9 de la IDE para JAVA Netbeans en http://netbeans.org/ Se puede descargar para desarrollar aplicaciones para Java o para otros lenguajes de programación como c++ o php. En este link está disponible la versión de la IDE con Java JDK y Java JRE (lo equivalente a la Common Language Runtine de .NET), ideal para descargarlo todo en un único ejecutable.


4ª Programar videojuegos con c++ y Active X era un pelín complicado, y más si no te dedicas profesionalmente. Pero hace unos años ha aparecido XNA Game Studio que ha simplificado el proceso de programación. Es una API que se descarga y se instala conjuntamente con el Visual C#, y hace que crear videojuegos profesionales sea realmente fácil. El problema es el código que no ves y que se genera automáticamente, si tienes inquietudes por saberlo todo. Aún así no había hasta ahora muchos manuales ni videos desarrollando un videojuego de principio a fin en 2D y en 3D. Afortunadamente han colgado estos vídeos en http://www.youtube.com/user/XNAMktg2#p/u que vienen con el código libre de descarga. XNA Game Studio Express es gratuito y está disponible en la misma página.