• Jueves 23 de Abril de 2026, 20:55

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - ipadilla

Páginas: [1]
1
C# / Crear una base de datos en C# según tutorial adjunto.
« en: Jueves 4 de Agosto de 2011, 12:19 »
Hola a todos:

Parece ser que no hay nadie que me pueda resolver este problema que tengo con este tutorial
en los foros de C# o VB. Por fabor véase el tutorial siguiente:

http://msdn.microsoft.com/es-es/library/49b92ztk.aspx

Mi problema es el siguiente: si creo el Instalador de la base de datos tal como explica
el manual en lenguaje VB.Net no tengo ningún problema, pero su lo creo en C# no funciona.
Lo he probado 100 veces y repasado la instalación del instalador otras tantas veces, pero
no logro que funcione.

Adjunto los 2 proyectos en VB y C# disponibles para que algún experto los vea y  descubra
lo que ocurre pues a mi me falta experiencia por lo visto. No logro entender lo que ocurre.
Ambos proyectos se compilan y ejecutan perfectamente sin ningún error, pero el proyecto en VB
crea la base de datos "TRIPOLIS" y el proyecto en C# no la crea.

Espero que haya alguien que me eche una manos.

Gracias

-----------------------------clase en VB.Net que funciona

Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.IO
Imports System.Reflection
Imports System.Data.SqlClient


Public Class VbDeployInstaller

    Dim masterConnection As New System.Data.SqlClient.SqlConnection

    Public Sub New()
        MyBase.New()

        'El Diseñador de componentes requiere esta llamada.
        InitializeComponent()

        'Agregue el código de inicialización después de llamar a InitializeComponent

    End Sub

    Private Function GetSql(ByVal Name As String) As String
        Try

            ' Gets the current assembly.
            Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()

            ' Resources are named using a fully qualified name.
            Dim strm As Stream = Asm.GetManifestResourceStream(
              Asm.GetName().Name + "." + Name)

            ' Reads the contents of the embedded file.
            Dim reader As StreamReader = New StreamReader(strm)
            Return reader.ReadToEnd()

        Catch ex As Exception
            MsgBox("In GetSQL: " & ex.Message)
            Throw ex
        End Try
    End Function

    Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
        Dim Command As New SqlClient.SqlCommand(Sql, masterConnection)

        ' Initialize the connection, open it, and set it to the "master" database
        masterConnection.ConnectionString = My.Settings.masterConnectionString
        Command.Connection.Open()
        Command.Connection.ChangeDatabase(DatabaseName)
        Try
            Command.ExecuteNonQuery()
        Finally
            ' Closing the connection should be done in a Finally block
            Command.Connection.Close()
        End Try
    End Sub

    Protected Sub AddDBTable(ByVal strDBName As String)
        Try
            ' Creates the database.
            ExecuteSql("master", "CREATE DATABASE TRIPOLIS") ' + strDBName)

            ' Creates the tables.
            ExecuteSql("TRIPOLIS", GetSql("sql.txt"))
            ExecuteSql("TRIPOLIS", GetSql("NuevoUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("UsuarioAdmin.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActivarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActualizarStock.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActualizarStockDetalleAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ActualizarStockPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ConsultarUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarCategoria.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarProveedor.txt"))
            ExecuteSql("TRIPOLIS", GetSql("EliminarUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromAlmacenByCodigo.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromCategoria.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleAlmacenByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleAlmacenStockMalo.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromDetalleVentaByCodVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoAB.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoABByCodProd.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoABByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoByCodProd.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoDetallePedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoIngresoPedidoByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoIngresoPedidoByRaz_Soc.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromHistoricoTransferencia.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPedidoByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPedidoByNombPers.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromProveedor.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromUsuarios.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromUsuariosByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromVentaByFecha.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetAllFromVentasByNombPers.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromCategoriaByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromCategoriaByUbic.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromClienteByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPedidoByFechasNoIngresado.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPedidosByNombPersNoActivados.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPersonalByDescNoActivados.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromPersonalByDni.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromProductoByAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromProductoByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetFromProveedorByNombre.txt"))
            ExecuteSql("TRIPOLIS", GetSql("GetProductosFromAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("IngresarPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("pa_buscarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("pa_buscarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("pa_modificarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ReducirStockOrigen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistarProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarCategoria.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarCliente.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarDetallePedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarDetPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarDetVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarEditarUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarHistorico.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarHistorico_AB.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarHistoricoIngPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarNuevoProductoEnAlmacen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarPersonal.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarProveedor.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarStockIngreso.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RegistrarVenta.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarAlmacenesOrigen.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarPedidoNoIngresado.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarPersonalSinUsuario.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarProductoPedido.txt"))
            ExecuteSql("TRIPOLIS", GetSql("RetornarUltimoProducto.txt"))
            ExecuteSql("TRIPOLIS", GetSql("ValidarUsuario.txt"))

        Catch ex As Exception
            ' Reports any errors and abort.
            MsgBox("In exception handler: " & ex.Message)
            Throw ex
        End Try
    End Sub

    Public Overrides Sub Install(
        ByVal stateSaver As System.Collections.IDictionary)

        MyBase.Install(stateSaver)
        AddDBTable(Me.Context.Parameters.Item("dbname"))
    End Sub

End Class

-----------------------Clase en C# que no funciona


using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using Microsoft.VisualBasic;
using System.Xml.Linq;
using System;
using System.Collections;
using System.Linq;
using System.ComponentModel;
using System.Configuration.Install;
using System.IO;
using System.Reflection;
using System.Data.SqlClient;
using System.Windows.Forms;



namespace DBCustomAction
{
   public partial class CSDeployInstaller
   {
      
        System.Data.SqlClient.SqlConnection masterConnection = new System.Data.SqlClient.SqlConnection();

      public CSDeployInstaller()
      {
         
         //El Diseñador de componentes requiere esta llamada.
         InitializeComponent();
         
         //Agregue el código de inicialización después de llamar a InitializeComponent
         
      }
      
      private string GetSql(string Name)
      {
         try
         {

                // Gets the current assembly.
            Assembly Asm = Assembly.GetExecutingAssembly();
            
            // Resources are named using a fully qualified name.
            Stream strm = Asm.GetManifestResourceStream((string) (Asm.GetName().Name + "." + Name));
            
            // Reads the contents of the embedded file.
            StreamReader reader = new StreamReader(strm);
            return reader.ReadToEnd();
            
         }
         catch (Exception ex)
         {
            MessageBox.Show("In GetSQL: " + ex.Message);
            throw (ex);
         }
      }
      
      private void ExecuteSql(string DatabaseName, string Sql)
      {
         System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql, masterConnection);
         
         // Initialize the connection, open it, and set it to the "master" database
         masterConnection.ConnectionString = (string) My.Settings.Default.masterConnectionString;
         Command.Connection.Open();
         Command.Connection.ChangeDatabase(DatabaseName);
         try
         {
            Command.ExecuteNonQuery();
         }
         finally
         {
            // Closing the connection should be done in a Finally block
            Command.Connection.Close();
         }
      }
      
      protected void AddDBTable(string strDBName)
      {
         try
         {
            // Creates the database.
            ExecuteSql("master", "CREATE DATABASE Tripolis"); // + strDBName)
            
            // Creates the tables.
            ExecuteSql("Tripolis", GetSql("sql.txt"));
            ExecuteSql("Tripolis", GetSql("NuevoUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("UsuarioAdmin.txt"));
            ExecuteSql("Tripolis", GetSql("ActivarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("ActualizarStock.txt"));
            ExecuteSql("Tripolis", GetSql("ActualizarStockDetalleAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("ActualizarStockPedido.txt"));
            ExecuteSql("Tripolis", GetSql("ConsultarUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarCategoria.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarProducto.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarProveedor.txt"));
            ExecuteSql("Tripolis", GetSql("EliminarUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromAlmacenByCodigo.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromCategoria.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromCliente.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleAlmacenByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleAlmacenStockMalo.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromDetalleVentaByCodVenta.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoAB.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoABByCodProd.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoABByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoByCodProd.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoDetallePedido.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoIngresoPedidoByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoIngresoPedidoByRaz_Soc.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromHistoricoTransferencia.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPedido.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPedidoByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPedidoByNombPers.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromProducto.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromProveedor.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromUsuarios.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromUsuariosByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromVenta.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromVentaByFecha.txt"));
            ExecuteSql("Tripolis", GetSql("GetAllFromVentasByNombPers.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromCategoriaByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromCategoriaByUbic.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromClienteByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPedidoByFechasNoIngresado.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPedidosByNombPersNoActivados.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPersonalByDescNoActivados.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromPersonalByDni.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromProductoByAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromProductoByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetFromProveedorByNombre.txt"));
            ExecuteSql("Tripolis", GetSql("GetProductosFromAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("IngresarPedido.txt"));
            ExecuteSql("Tripolis", GetSql("pa_buscarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("pa_buscarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("pa_modificarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("ReducirStockOrigen.txt"));
            ExecuteSql("Tripolis", GetSql("RegistarProducto.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarCategoria.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarCliente.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarDetallePedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarDetPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarDetVenta.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarEditarUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarHistorico.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarHistorico_AB.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarHistoricoIngPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarNuevoProductoEnAlmacen.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarPersonal.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarProveedor.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarStockIngreso.txt"));
            ExecuteSql("Tripolis", GetSql("RegistrarVenta.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarAlmacenesOrigen.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarPedidoNoIngresado.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarPersonalSinUsuario.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarProductoPedido.txt"));
            ExecuteSql("Tripolis", GetSql("RetornarUltimoProducto.txt"));
            ExecuteSql("Tripolis", GetSql("UsuarioAdmin.txt"));
            ExecuteSql("Tripolis", GetSql("ValidarUsuario.txt"));
            
         }
         catch (Exception ex)
         {
            // Reports any errors and abort.
            MessageBox.Show("In exception handler: " + ex.Message);
            throw (ex);
         }
      }
      
      public override void Install(System.Collections.IDictionary stateSaver)
      {
         
         base.Install(stateSaver);
         AddDBTable(this.Context.Parameters["dbname"]);
      }
      
   }
   
}

2
C# / Crear base de datos programando con C# aplicando el titorial que adjunto?
« en: Martes 2 de Agosto de 2011, 20:48 »
He encontrado el siguiente tutorial para crear una base de datos programándola en VB.Net. El manual es el que adjunto más abajo.

Mi pregunta es la siguiente: ¿Se puede aplicar este mismo tutorial programando en C#?

Os agradezco vuestra ayuda por anticipado.
ipadilla

-----------------------------------------------------------------------------------
Tutorial: Utilizar una acción personalizada para crear una base de datos en la instalación
Visual Studio 2005
Otras versiones

En el siguiente tutorial se muestra el uso de una acción personalizada y de la propiedad CustomActionData para crear una base de datos y una tabla de base de datos durante la instalación.
NoteNota

Este tutorial requiere tener instalado SQL Server en el equipo donde se implementará la aplicación.
NoteNota

Los cuadros de diálogo y comandos de menú que se ven podrían ser distintos de los que se incluyen en la Ayuda, dependiendo de la configuración o edición activas. Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.
NoteNota

En las siguientes instrucciones se detalla cómo se crea un proyecto de implementación utilizando un proyecto de Visual Basic; los principios generales se aplican a todos los proyectos de lenguajes de Visual Studio que admiten la implementación de aplicaciones basadas en Windows.
Para crear una clase del instalador

En el menú Archivo, haga clic en Nuevo proyecto.

En el cuadro de diálogo Nuevo proyecto, seleccione Proyectos de Visual Basic en el panel Tipo de proyecto y, a continuación seleccione Biblioteca de clases en el panel Plantillas. En el cuadro Nombre, escriba DBCustomAction.

En el menú Proyecto, haga clic en Agregar nuevo elemento.

En el cuadro de diálogo Agregar nuevo elemento, seleccione Clase del instalador. En el cuadro Nombre, escriba VbDeployInstaller.vb.

Para crear un objeto de conexión de datos

En el Explorador de servidores, seleccione Conexiones de datos. Haga clic con el botón secundario del mouse y elija Agregar conexión.

En el cuadro de diálogo Elegir origen de datos, seleccione Microsoft SQL Server.

En el cuadro de diálogo Agregar conexión, realice lo siguiente:

En la lista desplegable Nombre de servidor, escriba o seleccione un nombre de servidor.

Seleccione Utilizar autenticación de Windows.

En el cuadro de base de datos, escriba principal.

Haga clic en Aceptar para cerrar el cuadro de diálogo.

En el menú Datos, haga clic en Agregar nuevo origen de datos, a continuación, utilice el asistente para agregar la conexión que estableció en los pasos anteriores. Para comprobar que el origen de datos está en el proyecto, haga clic en Mostrar orígenes de datos en el menú Datos.

Para crear un archivo de texto que contenga una instrucción SQL para crear una base de datos

En el Explorador de soluciones, seleccione el proyecto DBCustomAction. En el menú Proyecto, elija Agregar nuevo elemento.

En el cuadro de diálogo Agregar nuevo elemento, seleccione Archivo de texto. En el cuadro Nombre, escriba sql.txt (en minúsculas).

Agregue el siguiente texto al archivo sql.txt:

CREATE TABLE [dbo].[Employees] (
[Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Rsvp] [int] NULL ,
[Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY];

ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED
(
[Name]
) ON [PRIMARY];

En el Explorador de soluciones, seleccione sql.txt. En la ventana Propiedades, establezca la propiedad BuildAction en el valor Recurso incrustado.

Para agregar código a la clase del instalador que permita leer el archivo de texto

En el Explorador de soluciones, seleccione VbDeployInstaller.vb. En el Menú Ver, elija Código.

Agregue la siguiente instrucción Imports al principio del módulo:
VB
C#
C++
F#
JScript

Imports System.IO
Imports System.Reflection
Imports System.Data.SqlClient


Agregue el siguiente código a la clase VbDeployInstaller, después de la declaración MyBase.New:
VB
C#
C++
F#
JScript

Public Class VbDeployInstaller

Dim masterConnection As New System.Data.SqlClient.SqlConnection

Public Sub New()
MyBase.New()

'This call is required by the Component Designer.
InitializeComponent()

'Add initialization code after the call to InitializeComponent

End Sub

Private Function GetSql(ByVal Name As String) As String
Try

' Gets the current assembly.
Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()

' Resources are named using a fully qualified name.
Dim strm As Stream = Asm.GetManifestResourceStream( _
Asm.GetName().Name + "." + Name)

' Reads the contents of the embedded file.
Dim reader As StreamReader = New StreamReader(strm)
Return reader.ReadToEnd()

Catch ex As Exception
MsgBox("In GetSQL: " & ex.Message)
Throw ex
End Try
End Function

Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
Dim Command As New SqlClient.SqlCommand(Sql, masterConnection)

' Initialize the connection, open it, and set it to the "master" database
masterConnection.ConnectionString = My.Settings.masterConnectionString
Command.Connection.Open()
Command.Connection.ChangeDatabase(DatabaseName)
Try
Command.ExecuteNonQuery()
Finally
' Closing the connection should be done in a Finally block
Command.Connection.Close()
End Try
End Sub

Protected Sub AddDBTable(ByVal strDBName As String)
Try
' Creates the database.
ExecuteSql("master", "CREATE DATABASE " + strDBName)

' Creates the tables.
ExecuteSql(strDBName, GetSql("sql.txt"))

Catch ex As Exception
' Reports any errors and abort.
MsgBox("In exception handler: " & ex.Message)
Throw ex
End Try
End Sub

Public Overrides Sub Install(ByVal stateSaver As _
System.Collections.IDictionary)

MyBase.Install(stateSaver)
AddDBTable(Me.Context.Parameters.Item("dbname"))
End Sub

End Class

En el menú Generar, elija Generar DBCustomAction.

Para crear un proyecto de implementación

En el menú Archivo, haga clic en Agregar y, a continuación, en Nuevo proyecto.

En el cuadro de diálogo Agregar nuevo proyecto, abra el nodo Otros tipos de proyectos y seleccione Proyectos de instalación e implementación en el panel Tipo de proyecto. A continuación, seleccione Proyecto de instalación en el panel Plantillas. En el cuadro Nombre, escriba DBCustomAction_Setup.

En la ventana Propiedades, seleccione la propiedad ProductName y escriba Instalador de DB.

En el Editor del sistema de archivos, seleccione la Carpeta de la aplicación. En el menú Acción, haga clic en Agregar y, a continuación, en Resultados del proyecto.

En el cuadro de diálogo Agregar grupo de resultados del proyecto, seleccione Resultado principal para el proyecto DBCustomAction.

Para agregar un cuadro de diálogo de instalación personalizado

Seleccione el proyecto DBCustomAction_Setup en el Explorador de soluciones. En el menú Ver, seleccione Editor y elija Interfaz de usuario.

En el Editor de la interfaz de usuario, seleccione el nodo Iniciar, situado bajo Instalar. En el menú Acción, elija Agregar cuadro de diálogo.

En el cuadro de diálogo Agregar cuadro de diálogo, seleccione el cuadro de diálogo Cuadros de texto (A) y, a continuación, haga clic en Aceptar.

En el menú Acción, elija Subir. Repita esta acción hasta que el cuadro de diálogo Cuadros de texto (A) quede situado encima del nodo Carpeta de instalación.

En la ventana Propiedades, seleccione la propiedad BannerText y escriba Especificar nombre de la base de datos.

Seleccione la propiedad BodyText y escriba Este cuadro de diálogo permite especificar el nombre de la base de datos que se debe crear en el servidor de bases de datos.

Seleccione la propiedad Edit1Label y escriba Nombre de la base de datos:.

Seleccione la propiedad Edit1Property y escriba CUSTOMTEXTA1.

Seleccione las propiedades Edit2Visible, Edit3Visible y Edit4Visible y asígneles el valor False.

Para crear la acción personalizada

Seleccione el proyecto DBCustomAction_Setup en el Explorador de soluciones. En el menú Ver, elija Editor y, a continuación, haga clic en Acciones personalizadas.

En el Editor de acciones personalizadas, seleccione el nodo Instalar. En el menú Acción, elija Agregar acción personalizada.

En el cuadro de diálogo Seleccionar elemento en el proyecto, haga doble clic en la Carpeta de la aplicación.

Seleccione Resultado principal de DBCustomAction (Active), luego haga clic en Aceptar para cerrar el cuadro de diálogo.

Asegúrese de que el elemento Resultado principal de DBCustomAction (Active) esté seleccionado en el Editor de acciones personalizadas. En la ventana Propiedades, seleccione la propiedad CustomActionData y escriba /dbname=[CUSTOMTEXTA1].

En el menú Generar, elija Build DBCustomAction_Setup.

Para instalar en el equipo de desarrollo

Seleccione el proyecto DBCustomAction_Setup en el Explorador de soluciones. En el menú Proyecto, elija Instalar.

Esto hará que se ejecute el instalador en el equipo de desarrollo.
NoteNota

Debe tener los permisos de instalación en el equipo para poder ejecutar el instalador.

Para implementar en otro equipo

En el Explorador de Windows, desplácese hasta el directorio del proyecto y busque el instalador que se ha generado. La ruta de acceso predeterminada será \documents and settings\nombreDeInicioDeSesión\DBCustomAction_Set up\configuración de proyecto\DBCustomAction_Setup.msi. La configuración de proyecto predeterminada es Debug.

Copie DBCustomAction_Setup.msi y los demás archivos y subdirectorios del directorio en otro equipo.
NoteNota

Para realizar una instalación en un equipo que no está en una red, copie los archivos en medios tradicionales como el CD-ROM.

En el equipo de destino, haga doble clic en el archivo Setup.exe para ejecutar el instalador.
NoteNota

Debe tener los permisos de instalación en el equipo para poder ejecutar el instalador.

Para desinstalar la aplicación

En el Panel de control de Windows, haga doble clic en Agregar o quitar programas.

En el cuadro de diálogo Agregar o quitar programas, seleccione DBCustomAction_Setup, haga clic en Quitar y, a continuación, haga clic en Aceptar para cerrar el cuadro de diálogo.
NoteSugerencia

Para desinstalar la aplicación en el equipo de desarrollo, elija Desinstalar en el menú Proyecto.
Responder Citando

3
C/C++ / error C2440: '=' : no se puede realizar la conversión de 'co
« en: Miércoles 7 de Julio de 2010, 13:09 »
error C2440: '=' : no se puede realizar la conversión de 'const char *' a 'char *'
Estoy intentando compilar con Visual Studio 2003 un programa que fue creado con Visual Studio 6.0 y obtengo en siguiente error:

c:En Curso_1ChromaticSvnTruckSrcClassesCList.h(13 5) : error C2440: '=' : no se puede realizar la conversión de 'const char *' a 'char *'
Se pierden calificadores en la conversión
c:En Curso_1ChromaticSvnTruckSrcClassesCList.h(10 5) : vea la referencia a la creación de instancias de plantilla de función 'CList<T>::CList_Entry *CList<T>::Set<const char>(CList<T>::CList_Entry *,const char)' que se está compilando
with
[
T=char *
]
c:En Curso_1ChromaticSvnTruckSrcDlg_UserMenusEd.cp p(758) : vea la referencia a la creación de instancias de plantilla de función 'CList<T>::CList_Entry *CList<T>::Add<const char*>(const char)' que se está compilando
with
[
T=char *
]


¿Alguien me puede ayudar a solucionarlo?

Muchas gracias
ipadilla
     Editar/Borrar Mensaje

Páginas: [1]