jueves, 8 de noviembre de 2012

[Visual Studio] Base de Datos integradas al proyecto

 

Vamos a analizar una situación particular que se produce al integrar las bases de datos, ya sean Ms Access, Sql Compact, Sql Server, o cualquier otra que pueda integrarse al Visual Studio

Cuando se desarrollan aplicaciones de escritorio, WinForm o WPF y a estos proyectos se le agrega una db, puede que las actualizaciones de datos no impacten sobre el archivo que se visualiza en el “Solution Explorer”.

Nota: si bien el ejemplo del articulo estará basado en Sql Compact (.sdf) la solución planteada aplicaría a otras base de datos como ser Ms Access (.mdb, .accdb), Sql Server (.mdf), etc

 

Problema


Cuando un conectionstring se define usando el nombre de la db o |DataDirectory| para especificar la localización del archivo de base de datos, en ambos casos se hace referencia a la carpeta donde se encuentra ejecutándose el .exe

string connstring = "Data Source=|DataDirectory|Contactos.sdf;Persist Security Info=False;";

Al usar este tipo de connection string es bastante común ver desarrollos en donde la db se encuentra integrada al Visual Studio.

clip_image001

Si se está ejecutando desde el Visual Studio la carpeta, por defecto, donde compila y deja los archivos resultantes será el \bin\Debug del proyecto, es allí donde la aplicación espera que se encuentre la base de datos.

No hay que engañarse, los cambios que realicen actualización a la db no serán efectuadas sobre el archivo que se visualiza integrado al VS (el que se visualiza en la imagen anterior), sino que las modificaciones se realizaran sobre la copia que crea el Visual Studio en la carpeta \bin\Debug

clip_image003

Como se observa, el Visual Studio creo una copia de la db en la carpeta donde compila, es por eso que .exe y .mdb están juntos, es más cuando se detenga la ejecución y se inicie nuevamente una nueva copia será efectuada pisando los datos previos.

Por lo tanto, si luego de ejecutar la aplicación desde el VS, la aplicación realizo actualizaciones en los datos, al detenerla y realizar doble click en el archivo de base de datos que está integrado en el “Solution Explorer” para poder trabajarlo desde el “Server Explorer”, no se visualizara ningún cambio.

clip_image004

Al usar el “Show Table Data” no habrá cambios que visualizar

clip_image005

Sera necesario usar la opción

clip_image006

Para poder acceder a al db que se copió en el \bin\Debug y al hacer bloque click en esta y verla en el Server Explorer allí si estarán las actualizaciones realizaras en la ultima ejecución.

clip_image007

Nota: recuerden que al volver a ejecutar desde el Visual Studio la db que se encuentra en la carpeta \bin\Debug será reemplazada por una nueva copia

Esta situación solo se manifiesta si se ejecuta desde el Visual Studio, cuando se lleve el .exe a la pc del usuario esta situación no se presentara, la aplicación se ejecuta directamente sin intermediarios que realice la copia de la db a una carpeta de compilación (apunto a que no esta el Visual Studio en medio creando una carpeta donde ubicar los archivos resultantes necesario para la ejecución).

 

Solución


Si se quiere evitar esta situación y hacer uso de la misma db que esta integrada al proyecto, el primer paso será deshabilitar la copia que realiza el VS, para ello se debería ir a las propiedades del archivo

clip_image008

Y allí cambiar la opción a “Do not copy”

clip_image009

Y luego se deberá modificar el string de conexión indicando la ruta completa el archivo de la db, usar solo el nombre o |DataDirectory| ya no será valido (porque no se copiara el archivo a la carpeta de compilacion)

string connstring = "Data Source=C:\...\Contactos.sdf;Persist Security Info=False;";

 

Conclusión


Si bien esta característica que aporta el Visual Studio al realizar una copia automática del archivo de base de datos a la carpeta de compilación podría ser útil en algunas situaciones, (como ser aquellas donde se espera datos inicializados para realizar pruebas), pero hay otras donde no es útil, por eso existen opciones que se pueden cambiar para deshabilitar esta acción.

Al implementar la solución mencionada logramos referenciar la db que se encuentra integrada al proyecto.

171 comentarios:

  1. Hola Leandro, si queremos agregar un instalador, con esta opción ya no es necesario crear una ActionData ? Automáticamente esta dentro del proyecto, con sus respectivos procedimientos almacenados, no es así ? Gracias por compartir!!

    ResponderEliminar
  2. hola Mauro

    no sabria decirte que es un ActionData, pero imagino apuntas a si el Primary Object de un setup project incluiria la db de forma automatica, hasta donde entiendo deberia ahcerlo

    recuerda que los procedure estan definidos en la db en un archivo .mdf (si es que usas sql server), por lo que si instalas la aplciacion y llevas este archivo los procedure estaran alli

    saludos

    ResponderEliminar
  3. Leandro: A lo que me refiero con el ActionData es a esto:

    http://msdn.microsoft.com/es-es/library/49b92ztk(VS.80).aspx

    Claro, pero vos aclaraste que la ruta de adjuntar la BD hay que cambiarla

    string connstring = "Data Source=C:\...\Contactos.sdf;Persist Security Info=False;";

    entonces al colocarla en el instalador que ruta se tendría que poner ?

    Gracias!!

    ResponderEliminar
  4. hola Mauro

    la ruta la cambias para adaptarla al VS, cuando estas ejecutando desde este, como bien habras leido comente que esta situacion no se genera en un ambiente productivo

    cuando prepares el instalador puedes volver a poner el nombre de la db, o |DataDirectory| si asi lo deseas, porque al ejecutar desde el .exe no se genera ninguna copia

    esto por supuesto si es que la db y el .exe estaran en la misma carpeta

    saludos

    ResponderEliminar
    Respuestas
    1. Hola Tocayo, Obvio mi nombre es Leandro Mendez, Te Escribo porque me gustaria tomar una especie de curso desde 0 contigo si esta dentro de tus posibilidades me gusta mucho la programación. mi correo es: leandro.mendez288@gmail.com, por este correo podrias enviarme los temas, gracias!!

      Eliminar
  5. Leandro me has dicho: "cuando prepares el instalador puedes volver a poner el nombre de la db, o |DataDirectory| si asi lo deseas, porque al ejecutar desde el .exe no se genera ninguna copia"

    El |DataDirectory|, lo debo poner en el DataSource o en el AttachDbFilename ??

    Porque la configuracion me queda asi:

    <add name="Conexion" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aff1.mdf;Integrated Security=True;User Instance=True"

    En el instalador me tendria que quedar asi ?? :

    <add name="Conexion" connectionString="Data Source=|DataDirectory|\aff1.mdf;Integrated Security=True;User Instance=True"

    No se si entiende a lo que voy.. Espero no molestar.. Gracias.


    ResponderEliminar
  6. hola Mauro

    si entiendo
    pero me parece que te estas confundiendo el "Data Source" es identico sea que ejecutes desde el VS o que lleves la aplicacion a la pc del usuario, porque el sql server debes estar presente en ambos casos

    sigues usando el .\SQLEXPRESS no importa en que ambiente este

    lo unico que cambia el la ruta del AttachDbFilename

    saludos

    ResponderEliminar
  7. Hola Leandro tengo una consulta:
    Estoy haciendo un sistema de control de asistencia flexible para trabajadores para capturar el registro de Entrada y actualizacion de la Salida estoy utilizando RadioButtonList .Obvio que utilizo base de datos en donde ya está almacenado mis trabajadores.
    Mi consulta es como hago la verificacion para que el trabajador al momento de realizar doble vez la entrada me indique que debe marcar una salida=?

    ResponderEliminar
  8. Hola Leandro, no encontré otra forma de contactarme contigo, me gustaría que guiaras en este problema:
    Necesito hacer un reporte con crystal Report, pero necesito hacerlo asíncrono. Es decir mandar a generar y que cuando finalice la creación me informe mediante un mensaje en algún div de la máster page, para poder descargarlo o algo así. Desde ya muchas gracias.

    ResponderEliminar
  9. hola Kely

    podrias usar un control de validacion para verificar si hay seleccion

    How to Use RequiredFieldValidator For Radio Button in ASP.NET

    igualmente se trata de un radio button, podrias definir uno seleccionado por defecto, de esa forma uno a lo sumo siempre estar marcado

    saludos

    ResponderEliminar
  10. hola Marcelo

    el tema de la generacion no lo veo complicado, el tema que si se complica es la notificacion al cliente ya que de por si el server no se puede comunicar con el cliente

    podrias usar SignalR

    pero es medio raro como se podria hacer eso con un reporte, ya que por lo general se usa para enviar info al cliente o alguna actualizacion

    saludos

    ResponderEliminar
  11. Estimado leandro quisiera por favor si podrias informarme si alguna ves has tocado el tema de webservices con asp.net en capas conectada a base de datos.. sql

    Atte
    Angel

    ResponderEliminar
  12. hola Angel

    la verdad no he planteado ningun ejemplo que involucre servicio

    tengo pensado varios articulos sobre el tema, pero no he tenido tiempo de plasmarlos en codigo como para publicarlo

    saludos

    ResponderEliminar
  13. Muchas Gracias. Por la respuesta. Saludos

    ResponderEliminar
  14. Estimado, me tome el atrevimiento de enviarte un mail, ya que buscando siempre por internet llego a tu blog.. en distintas busquedas de c#. te cuento que soy nuevo.
    y te escibo para ver si me podes dar una mano.
    Si lo deseas te puedo enviar una breve descripcion de mi problema.. ya q en tu web no encontre ningun articulo.
    Gracias de antemano.
    Saludos Cordiales.
    Diego Biasatti.

    ResponderEliminar
  15. hola Diego

    si seguro puedes escribirme al mail de contacto que figura en el blog

    si puedo ayudar con la pregunta, con gusto lo hare

    saludos

    ResponderEliminar
  16. Hola leandro mi nombre es jorge te felicito por todo el conocimiento que aportas a traves de este blog eres grande
    amigo me encuentro en una situación de confusiones grande he seguido mucho tu blog y creo eres el indicado para consultar conocimiento ya que soy novato quiero desarrollar una aplicación winforms en la que debo utilizar una base de datos pero he aquí mi primera confusión que es mejor utilizar la base de datos desde servidor o integrarla a la aplicación pues veo trabajas con ambas formas y no se como integrar un mdf a mi proyecto, mi segunda confusión es si trabajar en capas con entity framework o de que manera me recomiendas por que encuentro que hay varias y ahora mi tercera y mas grande tengo que generar reportes pero estos reportes tienen un formato especifico que es que deben ser en bloc de notas y no tengo idea de como lograr eso salvo una vaga idea de hacerlo con un xml
    bueno amigo esos son mis dolores de cabeza ya he perdido tiempo y aun no tengo nada pero espero con tu colaboración aclarar mis dudas y sacar esto a flote gracias de antemano y espero tus respuestas NOTA: perdón por escribir tanto pero es desesperación jejeje mi correo es macoictk@gmail.com.

    ResponderEliminar
  17. hola como podre hacer un ejecutable de un proyecto terminado, que me lleve la bd y que se conecte en otra computadora . tengo problemas ....alguien que me diga

    ResponderEliminar
  18. hola jose

    si la db y la aplciacion van a estar en pc separadas no incluyan en el instalador de la aplicacion la base de datos

    para la aplciacion crea un setup project simple

    para la db usa el instalador que ya trae esta por defecto, imagino usas sql server, en ese caso usa este para poner el servicio en la otra pc

    despues solo define el connection string en el .config de la aplocacion cliente para que apunte a esa otra pac

    recuerda si usas la version express de sql server que debes habilitar el servicio para las conexiones remotas ademas de validar que el firewall de windows no este bloqueando la conexion


    saludos

    ResponderEliminar
  19. Muy buen artículo, claro y conciso, pero para un novato como yo, me gustaría que explicaras como y donde hay que cambiar la cadena de conexión, pués no soy capaz de encontrar dicho lugar. Muchas gracias.

    ResponderEliminar
  20. hola Jesús

    la cadena de conexion deneria estar definida en el archivo de configuracion de nombre app.config

    aqui Archivos de Configuración - Una introducción (1/3)

    explcio como podrias ahcerlo para definir y tomar desde codigo la cadena de conexion

    recuerda que al compilar se renombra a: NombreAplicacion.exe.config

    saludos

    ResponderEliminar
  21. Hola, Leandro, soy nuevo en esto de la programación, he visto que todos tienen el mismo problema que yo en esto del empaquetado de la aplicacion, he hecho varios procedimientos a cerca de esto, mis dudas son: Cuando creas el nuevo proyecto de intalacion se agrega el resultado del proyecto,¿Quisiera saber si ahi tambien se agrega el .mdf?, otra es ya lo hice asi, pero solo consulta, y al realizar un transacion(registrar,mod,eliminar) no hace nada de eso ¿Como prodria solucionar este problema?. de antemano gracias...

    ResponderEliminar
  22. Que tal Leandro, hice una entrada en el foro y me gustaria saber por favor tu opinion al respecto. Es en cuanto a base de datos, probablemente cadena de conexion, ojala puedas revisarlo. Gracias

    http://social.msdn.microsoft.com/Forums/es-ES/aspnetmvces/thread/9cd25b8e-3a5b-4b04-934b-785ef2422095

    ResponderEliminar
  23. Hola Leandro, una consulta. Al guardar la BD dentro de la carpeta de la aplicación, existe alguna manera de ocultar/proteger la bd para que no puede ser vista o pueda ser eliminada.
    Si no me equivoco, cuando haces el instalador, se puede indicar que archivo queres que no se muestre en la carpeta de instalación. gracias.

    ResponderEliminar
  24. hola Madara

    si el archivo mdf esta como output del proyecto prindipal que toma el setup project deberia incluirlo

    pero ojo que incluya el mdf no quiere decir que tambien incluya el sql server

    el sql server deberias instalarlo de forma separada

    lo que no entendi es lo de al realizar la transaccion no hace nada, cuando es que no hace nada? despues de instalarlo en la pc del usuario ? no obtienes tampoco ningun error?

    saludos

    ResponderEliminar
  25. hola AlfredMeza

    la verdad hubiera recomendado lo mismo que Juan comenta alli

    si solo tienes acceso por ftp, y nada mas, lo unico que queda es contactar al tecnico que si tenga acceso y pueda validar

    - que el servicio del sql server este correcto
    - podrias comentarle el connection string que defines para que lo valide, a veces el sql server se declara en un puerto diferente y esto hay que espcificarlo, pero solo quen lo configuro podria decirlo

    o sea si solo te dan el ftp estas ciego como para poder realizar verificaciones de proque no se puede conectar a sql server

    saludos

    ResponderEliminar
  26. hola Si Señor

    hasta donde se ocultar un archivo no se puede salvo que le cambies el atributo de ese archivo en las propiedades

    igualmente si el usuario especifica en windows para ver archivos ocultos podra ver que esta alli

    podrias quitar de la instalacion el archivo, pero bueno si haces eso ya no lo tendras para poder usarlo

    saludos

    ResponderEliminar
  27. Saludos amigo,una pregunta mi base de datos la cree en sql server managent 2005 y mi proyecto estaba en visual 2012 pero lo migre a visual 2012 y en mi ejecutable me dice que la base de datos es solamente de lectura,acaso debo de instalar otro servidor para la BD?? saludos

    ResponderEliminar
  28. hola

    no validaste si el .mdf esta como readonly, pero a nivel de archivo

    tambien valida si donde pones el mdf se puede escribir, cuando el servicio de sql no puede escribir pone la db como solo lectura

    para cambiar el atributo quizas debas detener el servicio de sql server

    saludos

    ResponderEliminar
  29. hola leandro hice todo lo dices, pero me dice ya existe una base de datos con ese nombre y el error sale en cnn.open

    ResponderEliminar
  30. hola Yusary

    suele suceder que a veces la db quede adjunta al servicio
    pero si reinicias el servicio de sql server deberia quitarse

    tambine podrias probar cerrar el VS y eliminar el contenido de la carpeta \bin\Debug del proyecto

    saludos

    ResponderEliminar
  31. hola q tal tengo un problema ya termine mi aplicacion en vb 2010 y utilizo una bd en sql 2008 ya adjunte la base de datos como dices en tu tutorial al correr la aplicacion dentro del visual estudio funciona bien se conecta a la base de dtos inserta datos actualiza elimina edita doto bien pero al instalarla en un equipo diferente ya hecho el instalador me sale un error al kerer conectarme con la bd me marca un error de conexion de q el servidor no estaba acesible o el nombre de la instancie no se encontro.. no se aq se deba esto.. espero y me puedad ayudar gracias....

    ResponderEliminar
  32. hola EDWIN

    la db que usas es un .mdf que pones en la carpeta App_Data, o la db esta integrada al servicio de sql server ? recuerda que si la usas desde archivo el sql express debe estar instalado localmente

    la db esta local en el equipo donde pones el iis o se accede remoto

    validaste que el connection string que defines tenga los datos correctos ?


    saludos

    ResponderEliminar
  33. Hola Leandro

    He estado leyendo tus comentarios y son muy buenas tus aportaciones....pero tengo un pequeño problema......tengo mi proyecto en mi pc y todo bien....pero al pasar el proyecto a mi lap (instalando previamente todo lo necesario) lo ejecuto y todo bien hasta el momento en que quiero visualizar los reportes (están hechos con reportviewer) no se visualizan :( que puede estar pasando????

    ResponderEliminar
  34. hola Mariana

    por lo que comentas se trata de un reporte de Reporting Service en modo local, o sea tienes un .rdlc

    si es asi como es que asignas datos a este reporte? usas un dataset tipado o quizas una coleccion de un clase que tu defines?

    has instalado en esa otra pc los redistribuibles de reporting service ?


    Microsoft Report Viewer 2010 Redistributable Package


    saludos

    ResponderEliminar
  35. Fantástico el aporte que haces que bueno encontrar a personas con tanto conocimiento con la voluntad de compartirlo, muchas gracias, y yo también tengo una duda que agradecería si puedes ayudarme hace ya unos años aprendí a hacer que las conexiones de una aplicación funcionaran a cualquier PC que la llevara sin usar el común Local Host, lamentablemente por falta practica olvide como lo hacia, si talvez conoces otra forma de conectar sin usar lo del Local Host te lo agradecería, gran trabajo felicitaciones y de antemano gracias...

    ResponderEliminar
  36. hola HAMZ

    la base de datos que usas es sql server?
    si es asi solo debes definir el connection string indicando el nombre o ip del equipo que tiene instalado el motor de base de datos

    http://www.connectionstrings.com/sql-server-2008

    solo cambias ese localhost por el nombre del equipo al cual te quieres conectar, por supuesto valida que el firewall de windows no bloquee la conexion

    la db deberia estar integrada al servicio de sql server en ese servidor

    saludos

    ResponderEliminar
  37. Qué tal Leandro?
    Tu blog me ha servido de mucho. Te comento que realizado un proyecto siguiendo muchas de tus guías: comunicación desacoplada entre formularios, archivos de configuración y arquitectura n-tier. Además, quise probar con una base de datos que no conocía: SQLite. Todo funciona ok pero tengo un problema, a pesar de que creé una carpeta específica para alojar la base de datos, veo que no es ahí donde realmente se están guardando los datos. Es decir, en la estructura del proyecto tengo una carpeta Data que contiene el archivo miBD.sqlite y en el archivo de configuración tengo 'DataSource=/Data/miBD.sqlite'; sin embargo, cuando trato de usar el archivo miBD.sqlite encuentro que está vacío. El sistema está instalado en Win7 pero las pruebas las hago desde WinXP. ¿Alguna idea de donde se ha almacenado mi archivo realmente?.

    Saludos

    ResponderEliminar
  38. hola GrupoX

    per esta db de sqlite esta integrada al VS, puedes verla en el siolucion explorer?
    porque si es asi seguramente se este copiando al \bin\Debug del proyecto, lo has validado ?

    o sea que este sucediendo con esta db lo mismo que comento en este articulo
    saludos

    ResponderEliminar
  39. Maestro Tuttini:

    Muchisimas gracias por la informacion de las Base de Datos integradas. Tenía un gran problema con eso pero con su explicación me saco de un gran aprieto. Aprecio mucho como usted comparte su conocimiento y espero que siga asi.

    De todo corazon muchas gracias

    saludos

    ResponderEliminar
  40. Hola Leandro, tengo una consulta acerca de las Bases de Datos integradas a un proyecto. Utilizo Visual Studio 2012, creé una aplicación y la base de datos desde el mismo Visual... Instale este sistema en un servidor, pero cuando las máquinas clientes quieren utilizarlo, me surge el error de que la Base de Datos no permite conexiones remotas... Cómo habilito este acceso a mi Base de Datos? se puede? Desde ya, te agradezco cualquier ayuda!!!

    ResponderEliminar
  41. hola Unknown

    pero la idea es usar la db lcoal en la pc del usuario o desde un servidor ?

    porque si es desde el servidor el archivo de la db deberias adjuntarlo al servicio del sql server, ademas de revisar estos pasos:

    Enable Remote Connection on SQL Server 2008 Express

    verifica tambien si el firewall de windows no bloquea el acceso al puerto del sql server

    saludos

    ResponderEliminar
  42. Hola Leandro, muchas gracias por tu siempre desinteresado apoyo.
    Agradezco me puedas ayudar con este inconveniente que tengo: Desarrolle una aplicación local por capas, y en la capa de acceso a datos esta la base de datos local, en modo de depuración funciona perfectamente, pero cuando cuando se instala en otra maquina, genera error porque no encuentra la BD, agradezco tu valiosa colaboración Leandro.

    ResponderEliminar
  43. hola carlos_yy

    la base de datos que usas es Sql Server ?

    revisaste el connection string si esta correcto? quizas definiendo en este la ruta fisica fija al archivo de la db

    podrias tambien integrar la db al servicio de sql server y usarlo simplemente con el nombre y no como archivo, solo deberias realizar un attach del mdf al servicio de sql server

    saludos

    ResponderEliminar
  44. hola leandro mira que necesito adjuntar la bd al instalador osea para al momento del instalador la bd quede en el programa instalado y no de ningun error por el odbc trabajo con acces xfa como quedaria la direccion o codig de conexion
    gracias......

    ResponderEliminar
  45. hola noel

    la base de datos que usas es sql server ? porque si es asi me suena raro que uses odbc, la verdad no es nada aconsejable

    deberias usar el proveedor de sql server, o sea SqlConnection, SqlCommand, etc

    la db si la usas como mdf la puedes adjuntar como archivo al instalador

    saludos

    ResponderEliminar
  46. hola leandro la base de datos que utilizo es en acces y la conexion que utilizo es esta: conexion.ConnectionString = "DSN=nombre"
    pero como hacerla para adjuntar esa base de datos en el instalador se necesitara algun codigo o como xfa gracias....

    ResponderEliminar
  47. hola noel

    no se que tipo de instalador estas creando, quizas sea un Setup Project

    si es ais podrias poner la db como un archivo, es mas si la db esta dentro del proyecto incluido como un item mas que visualizas en el solution explorer deberia icluirse de forma automatica

    saludos

    ResponderEliminar
  48. hola Leandro
    me puedes mandar un ejemplo de como hacerlo mi correo es daddyramos90@gmail.com te lo agradecere. xfa gracias

    ResponderEliminar
  49. hola noel

    pero lo explico en este mismo articulo, o sea la db Ms Access integrarla al VS como aqui planteo con el sdf, es de la misma forma solo incluyes el mdb al proyecto

    solo que en este caso si dejale la opcion de Copy Always para que la incluya en el instalador

    saludos

    ResponderEliminar
  50. hola y la conexion solo seria esta o lleva mas codigo

    string connstring = "Data Source=C:\...\Contactos.sdf;Persist Security Info=False;";

    ResponderEliminar
  51. esq ai estoy confundido porq tengo esto oara conectarme


    Public conexion As New ADODB.Connection
    Sub abrir()
    conexion.ConnectionString = "DSN=nombre"
    conexion.Open()

    pero nose si deberia incluir este

    string connstring = "Data Source=C:\...\Contactos.sdf;Persist Security Info=False;";

    tambien para al momento de la instalacion no de problemas..
    disculpa tants preguntas xfa
    saludos....

    ResponderEliminar
  52. hola noel

    el tema es que si defines
    DSN=nombre
    debes configurar un DNS en el panel de control de la PC

    es mas no deberias usar en .net la libreria de ADODB, porque es de VB6, y se supone que debes usar ADO.NET o sea el OleDbConnection, OleDbCommand etc

    saludos

    ResponderEliminar
  53. leandro que tengas un buen dia, tengo una consulta, estoy implementando un proyecto en visual 2010 y uso la base de datos Sql Server 2008 R2 que trae consigo la aplicacion de Visual, recien estoy entrando en esto de la pogramacion y no entiendo muchas cosas,
    1- Porque ustedes hablan que en Sql la extencion es SDF o MDB y cuando yo cree la base de datos dice dbo

    2- tengo que crear un instalador para poder copiar mi proyecto a otra computadora y que trabajemos en linea con la base da datos creada

    3- En Mi computador tengo el Sql por ende la base de datos, puedo almacenar la base de datos a otra computadora que no tenga sql y asi utilizarla como servidor o estrictamente debe estar en mi computadora.

    Finalmente cuando cree mi proyecto la cadena de conexion es

    Dim Cadena As String = "Server=CREDITOS-EH-07\SQLEXPRESS;Initial Catalog=Gestion_Clientes;Integrated Security=true"

    y me funciona bien en mi maquina, para usar el proyecto en otras computadoras tengo que cambiarlo...???

    Mil disculpas por tantas preguntas a la vez.....espero con ansias tu respuesta

    Saludos y muchas gracias de antemano

    ResponderEliminar
  54. Disculpa Leandro otra consulta al tener la aplicacion en red los usuarios pueden ingresar datos y hacer consultas al mismo tiempo sin crear problemas o no es posible...??? de ser posible en la PC que se utiliza como servidor hay que hacer algo adicional

    ResponderEliminar
  55. hola Jose

    1-
    las extensiones que mencionas no son de una db sql server
    sdf es de Sql Compact y mdb es de Ms Access, son otras base de datos
    para sql server al extension es .mdf

    2-
    la base de datos las ubicaras en un lugar centralizado? si es asi solo es cuestion de definir el connection string de forma correcta para localizar esa db
    El instalador no incluye la db solo la aplicacion

    3-
    pudes usarlo desde donde necesites, pero recuerda que si usas sql server express requieres que se habiliten las conexiones remotas y tambien el firewall de windows

    Enable Remote Connection on SQL Server 2008 Express

    despues cambias el connection string para apuntar a la pc que defines como servidor de base de datos

    saludos

    ResponderEliminar
  56. hola Jose

    asi es pueden conectarse varios usuario sin tener problemas, por supuesto si dos o mas acceden al mismo registro habra un tema de concurrencia, en donde un usuario podria pisar lo que modifique el otro

    pero eso se resuelve con un TimeSpan

    saludos

    ResponderEliminar
  57. Mil gracias Leandro por su pronta respuesta, si me deja un poco confundido la parte en la que menciona que mi base de datos no es de Sql y como le comente es la que trae VS ULTIMATE 2010 Sql Server 2008 R2, no se si por eso la extencion es dbo




    ResponderEliminar
  58. hola Jose

    hasta donde se sql server no define ninguna extensio dbo, si usa extensiuon .mdf (es el archivo de datos) y .ldf (es el archivo de log), estos podrias encontrarlos en la carpeta \DATA del servicio de sql server

    lo que si define como "dbo" por defecto es el nombre del schema de la db, por lo que puedes poner SELECT * FROM dbo.NombreTabla

    o sea dbo no es una extension del archivo fisico que se crea

    saludos

    ResponderEliminar
  59. Leandro buen dia, quero integrar una base de datos de Sql express 2008 a un proyecto de visual studio que quiero tener en red con varios clientes, usando como servidor mi PC la actual cadena de conexion es la siguiente y ni me funciona cuando quiero hacer conexion de una computadora de cliente:Dim Cadena As String = "Server=CREDITOS-EH-07\SQLEXPRESS;Initial Catalog=Gestion_Clientes;Integrated Security=true"

    y una ultima consulta si me aclaras un poco cuaales son los elementos que debe incluir una cadena de conexion, por ejemplo cual es la diferencia entre ;Integrated Security=true y ;Integrated Security=false

    Gracias de antemano por tu apoyo

    ResponderEliminar
  60. hola Jose

    no entendi, si te funciona con la cadena de conexion que muestras entonces cual seria el problema ? por lo que comentas puedes conectarte desde otros cliente a tu pc

    http://www.connectionstrings.com/sql-server-2008/

    el uso de Integrated Security defin la seguridad de forma integrada con windows, si estas en un dominio de windows Server se pueden usar el usuario de windows con el cual te autenticas a la pc como login automatico hacia la base de datos
    o sea la autenticacion es directa con el usuario que se autentica en la pc
    si anulas esta seguridad entonces aplicar la de sql server, deberias definir usuario y password

    saludos

    ResponderEliminar
  61. Gracias Leandro entendi muy bien lo de Integrated Security, ahora mi consulta es que no puedo conectar mi aplicacion al instalarla en otros computadores, ya hice lo de Client Protocols y todos los deje en Enable el TCP/Ip Names Piped Via y aun no me funciona, ahora bien no se si me falta hacer algo con el Firewall y alli si no puedo porque esta bloqueado....me ayuda por favor.....muchas gracias

    ResponderEliminar
  62. hola Jose

    el firewall es una de las principales causas que podria estar afectando la conexion

    sino habilitas el puerto donde esta escuchando el sql server no te podras conectar remoto

    vas a tener que consultar con alguien encargado de la infraestructura de la red para que pueda habilitarlo y agregar la exception que habilite el puerto de sql server

    saludos

    ResponderEliminar
  63. Hola Leandro,
    Una consulta, este método que das también aplica para un aplicación WinForm de VS 2013 con una conexion a BD de SQL Server 2008 R2?.
    Ya finalize una aplicación, y estaba intentando agregar un nuevo item existente en el proyecto(según vi en un tutorial de como crear un ejecutable con VS 2013 y sql server 2008 R2), el .ldf y .mdf de mi base de datos, sin embargo me sale Acceso Denegado, sin más. He intentado buscarle solución en google y no encuentro ningún indicio del problema que tengo. Y en base a eso llegue aquí para ver si me podrías hechar una mano. Gracias.

    ResponderEliminar
  64. Edit:
    Ya logré adjuntar los archivos a mi proyecto, pero casi manualmente puesto que desde la carpeta MSSQL\DATA no podia. Lo que hice fue copiar el .mdf y el .ldf de MSSQL\DATA al escritorio, desde el escritorio si logre adjuntarlos al proyecto pero surgen estas 2 cosas...
    1. Al intentar abrir los archivos me sale lo siguiente: El archivo de base de datos no es compatible con el actual instancia de SQL Server.

    2. Los archivos no son adjuntados en el bin\debug como en tu ejemplo, si no se ubican en la carpeta dónde se encuentran todos los forms.

    PD: No Estoy seguro si es la forma correcta de adjuntar los archivos .ldf y .mdf al proyecto, sin embargo no me quedaba de otra pues no podía hacerlo directamente de la carpeta de SQL SERVER.

    ResponderEliminar
  65. hola Miguel

    la version de VS que uses no deberia afectar la tecnica es la misma, poner el mdf y ldf en la carpeta del proyecto, ver los archivo ocultos y usar la opcion de include in proyect, son esos 3 pasos deberia ubicar la db integrada al VS

    el mensaje de incompatibilidad no es raro que aparezca si es que ese mdf lo creaste con una version diferente de Sql Server, quizas deberias attachar la db directo al servicio para poder editarla, esto me paso bastante con bases de datos que tenia y queria trabajar con sql server 2012
    poner la db en sql server es tan simple como usar en el sql server management studio la opcion de attach

    solo se copiaran a la carpeta bin\debug cuando compiles o ejecutes, valida que la propiedad del mdf este como en esta imagen

    imagen

    saludos

    ResponderEliminar
  66. Hola Leandro,
    Tengo una duda cuando dices :
    poner el mdf y ldf en la carpeta del proyecto, se puede hacer con copiar los .ldf y .mdf y pegar, o tengo que hacerlo desde el VS?
    ver los archivo ocultos y usar la opcion de include in proyect, no entendí eso de ver los archivos ocultos exactamente para qué?, y dónde está la opción de include in proyect?, en VS cuando doy click derecho al .ldf o .mdf en las opciones sale más bien exclude from project, me imagino que ya están incluidos ciertos, no?
    Espero puedas ayudarme con estas dudas... Gracias.
    G

    ResponderEliminar
  67. Hola Leandro,
    Lo del include in project ya entendi a lo que te referias, estaré muy agradecido si me resuelves las otras 2 dudas que tengo,
    otra consulta más, al momento de intentar abrir el .mdf para verlo en el Server Explorer me sigue saliendo el mensaje de incompatibilidad, apesar de haber hecho el atach que me dijiste que haga. No entiendo porque... Algun consejo? Gracias...

    ResponderEliminar
  68. hola Miguel

    pero si realizas el attach ya no necesitas del server explorer administra la db directo desde el Sql server management studio

    las db son incompatibles porque las creaste con versiones diferentes, quizas pudiendo extraer el script que cree la estructura podrias crear un nuevo mdf y ejecutar ese script para el el mdf sea creado directo con la version actual que usas de sql server

    igualmente si te dejo realizar el attach olvidate del server explorer y administra la db integrada al servicio

    saludos

    ResponderEliminar
  69. hola leandro disculpa la molestia pero me gustaria saber como puedo hace que mi proyecto adjunte automaticamente su base de datos la cual la cree en mysql. si me podrias poner un ejemplo seria de gran ayuda

    ResponderEliminar
  70. hola adanV

    hasta donde se mysql no tiene esta capacidad de adjuntar dinamicamente la db al servicio

    vas a tener que poner la db en el servicio de mysql para poder conectarte a esta, desde el VS dinamicamente no creo que puedas hacerlo
    si usarias sql server esta si tiene esa capacidad porque la db asi fue pensada

    saludos

    ResponderEliminar
  71. que tal Leandro.
    como puedo hacer para que mi cadena de conexion funcione en otra pc que tiene instalado
    el windows 7(aca ya instale los requisito previos como el .net framework, sql server 2008, windows installer lo que se descargan cuando creas un instalador y tambien adjunte el .mdf y .ldf tambien configure conexion remota y el firewall). mi cadena de conexion es esta que funciona en mi pc cn.ConnectionString = "data source=.;integrated security=true;initial catalog=practicar" probe con esta cadena 'cn.ConnectionString = "integrated security=true;data source=Intel-PC;initial catalog=practicar" en la otra pc(windows 7) y nada me sale este error

    (Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión con SQL Server))

    lo que pasa es que yo no quiero instalar el programa sql server 2008 en la otra pc(windows 7) para que funcione, quiero que el mismo instalador funcione con la bd adjuntada al proyecto. esto es posible o no? osea que mi aplicacion y mi bd esten en la misma maquina(windows 7) sin tener que instalar todo el programa sql server 2008. de antemano muchagracias

    ResponderEliminar
  72. hola C01ful

    no intentaste crear un archivo .udf
    basicamente crea un archivo de texto y lo renombras cambiandole la extension a udf

    con este si lo ejecutas podras probar la conexion a la db, para poder validar si desde esa pc puedes conectarte de forma remota sin necesidad de instalar el management studio

    saludos

    ResponderEliminar
  73. que tal leandro

    y como creo un archivo de texto .udf(que un bloc de nota), y que tiene que estar dentro de este archivo de texto toda la base de dato.
    el archivo de texto .udf tengo que adjuntarlo tambien al proyecto del instalador?

    y como pongo mi cadena de conexion para la otra pc(window 7)
    cn.ConnectionString = "integrated security=true;data source=Intel-PC;initial catalog=practicar"

    ResponderEliminar
  74. Hola leandro¡¡
    y como se cambiaria el connectionstring luego de cambiar a la opcion "Do not copy" ya que en propiedades de la base en el soluttion explorer me aparece en tono gris y no se puede modificar, desde ya gracias¡¡

    ResponderEliminar
  75. hola Carlos

    el archivo udf es solo para poder definir los datos de la conexion y realizar el test sin tener que instalar nada en la pc del usuario, pero pudiendo validar si puedes conectarte o no

    no lo tiene que integrar a ningun proyecto

    el connection string no lo estas definiendo en el App.config ? porque lo pones fijo en el codigo

    esa pc con win 7 se esta conectando de forma remota al servicio de sql server? es un sql express?

    saludos

    ResponderEliminar
  76. hola Matias

    no veo que tiene que ver el "Do not copy" con el server explorer,
    son cosas separadas

    si en el .mdf que tienes en el proyecto realizas doble click deberia abrirse en el server explorer

    pero no tiene nada que ver como administras la db a como esta se copia a la carpeta de compilacion cuando ejecutas

    saludos

    ResponderEliminar
  77. que tal Leandro

    la conexion la ago en el codigo no en el app.config pero cual es la diferencia ?
    no es remota la conexion yo quiero que el instalador de mi aplicacion y la base de dato se instalen en la pc (window 7)
    sin tener que instalar el programa sql server, es sql expres
    pero cuando pongo la cadena de conexion me dice que no encuentra el servidor apesar de que adjunto la base de dato en el proyecto
    cn.ConnectionString = "integrated security=true;data source=Intel-PC;initial catalog=practicar"

    ResponderEliminar
  78. Hola nuevamente y gracias por responder. yo me refiero a mi base de datos de proyecto cuya propiedad conectionstring no se puede modificar( aparece en gris). Todo esto haciendo referencia a tu solucion propuesta en el tutorial de esta publicacion que propone usar la opcion DO NOT COPY Y CAMBIAR EL CONECTIOSTRING para poder usar la base original del proyecto y no la copia que realiza visual.
    Lo que sucede es que al ejecutar el proyecto y realizar las consultas no me arroja resultados, ya que Los datos cargados como bien explicaste estan en la copia que se ubica en BIN/DEBUG o sea al ejecutar no puedo manipular los datos cargados. En otras palabras, puedo trabajar BD copia que es la que tiene los datos???. Nuevamente gracias¡¡¡

    ResponderEliminar
  79. hola Matias

    pero porque no puedes modificar el connection string? se supone que este lo defines en el archivo de configuracion .config
    es alli dodne se define el connection string por eso no entiendo porque aparece en gris

    si puede cambiar el connection string podrias apuntar a la db que esta en el proyecto y no a la que se copia al bin\Debug

    saludos

    ResponderEliminar
  80. Hola de nuevo, mil gracias por tu tu respuesta y tu tiempo.ya resolvi ese dilema que me aquejaba, todo debido a la inexperiencia otra vez mil gracias. Saludos¡¡¡¡

    ResponderEliminar
  81. Hola Leandro

    Tengo unas preguntas sencillas, espero me puedas ayudar, es necesario tener instalado cualquier versión de SQL en la pc donde se va instalar el proyecto echo en Visual Basic con base de datos SQL server?, si es asi, que otra base de datos pudiera usar sin instalar nada en la pc donde trabajarian con el proyecto?, la aplicación fue diseñada con VB.net 2012 y SQL server 2012

    ResponderEliminar
  82. hola Hector

    en realidad depende, si el mdf lo creaste con una version sql 2012, es logico que deba al menos ser esa version o superior, con sql 2008 podrias tener problemas

    sino quieres instalar nada podrias usar Sql Compact o quizas SqlLite

    saludos

    ResponderEliminar
  83. buen dia hermano como agrego la opcion de reporting a vb 2012 ya que no me aparece en la opcion de elementos comunes cuando quiero agregar un nuevo elemento

    ResponderEliminar
  84. hola EDWIN

    de casualidad usas una version Express de VS 2012 ?
    porque si es as esta no dispone de reporting, deberias cambiar a una version Professional o superior

    saludos

    ResponderEliminar
  85. holaaa

    utilizo VS 2012 ULTIMATE ya instale el reportViewer pero sigo con el mismo problema no tengo la opcion de reporting

    ResponderEliminar
  86. hola EDWIN

    pero no puedes ver la opcion

    imagen

    si vas a la opcion de Reporting deberias poder crear un .rdlc ese es un reporte de reporting service en modo local

    o buscabas como crear un reporte integrado al servicio ? porque si es asi vas a tener que instalar el Sql Server express con las advanced tools lo cual incluye el template para reporting, pero esto es si quieres integrar el reporte al servicio de sql server

    saludos

    ResponderEliminar
  87. hola hermano no me aparecia la opcion de Reporting instale el Cristal Reports y ahora si sale la opcion Reporting pero no esta le opcion para Informes locales .rdlc solo se añadio la opcion de Crystal :-(

    ResponderEliminar
  88. hola EDWIN

    la verdad esta raro lo que comentas, teniendo el VS ultimate la opcion de reporting deberias tenerla

    saludos

    ResponderEliminar
  89. Hola, buen día tenga señor Tuttini. Me ha dado gusto ver los aportes que hace usted para la comuna de programadores que estamos aprendiendo. Bueno, iré al grano: Tengo una aplicación de escritorio hecha con VB.net, acceso a una B.D. en Access y además se hace uso de CrystalReports. Hace unos días estuve pensando en cómo solucionar varios problemas, se los enumero:

    1.-¿Cómo preparar la B.D desde el asistente para crear el instalador?

    2.-¿Cómo hacer para que al momento de crear mi B.D. se pueda cambiar el string connection (actualizarse) a la nueva ruta de mi B.D.?

    3.-Al crear la BD es necesario introducir un dato de administrador en una tabla llamada usuarios, para que no se interactue directamente con la BD(osea que se abra access y luego la BD).

    4.-¿Cómo ocultar esa BD?

    5.-¿Cómo dambiar el datasource de mi formulario de crystal reports, ya que al cambiar la ruta del sistema, me genera un error?. ¿Se podría hacer al crear un instalador?

    Espero que no sea una molestia. De antemano le agradezco la atención que se tomo para leerme y poder ayudarme dentro de sus conocimientos. Muchas gracias.

    ResponderEliminar
  90. hola Brayan

    bueno son varias las preguntas

    la db Ms Access en definitiva es un archivo por lo que podrias incluirlo como un file mas dentro del instalador, no se que instalador estas realizando quizas sea un Setup project

    si defines el connection string en un archivo de configuracion App.config despues de instalar podrias editarlo con el notepad para cambiar el connection string

    pero si usas
    Datasource=|DataDirectory|\nombredb.mdb

    esto es automatico y toma la ruta donde esta el .exe
    si pones la db en la misma carpeta lo toma directo

    en el connection string poderias definir con que usuario y password se accede aunque seria bueno quizas encriptar esa seccion asi no se puede visualizar esta info

    ocualtar la db lo veo un poco dificil, quizas podrias ponerle otra extension inventada, aunque hagas esto si usas la db en el connection string lo seguira reconociendo

    saludos

    ResponderEliminar
  91. en mi caso la base de datos no se genero por defecto en la carpeta bin por que sera?

    ResponderEliminar
  92. hola juan

    imagino la db puedes verla en el solution explorer no? o sea esta integrada

    si es ais podrias validar las propiedades "Copy to autput directory" con el valor que indique que debe realizar la copia a la carpeta de compilacion

    saludos

    ResponderEliminar
  93. hola leandro gracias por atenderme,
    pero la bd tampoco se refleja en solution explorer, que me falta?
    gracias de nuevo

    ResponderEliminar
  94. La verdad es que me gustaria saber si me ayudas con un paso a paso pa instalar mi aplicacion en otro pc pues en este pc me funciona bien pero no logro instalarlo en el otro pc por favor dime que debo hacer la base de datos es sql server 2008

    ResponderEliminar
  95. esta es mi cadena de conexion
    Protected Function conectado()
    Try
    cnn = New SqlConnection("data source=(local);initial catalog=dbventas;integrated security=true")
    cnn.Open()
    Return True
    Catch ex As Exception
    MsgBox(ex.Message)
    Return False
    End Try
    End Function

    ResponderEliminar
  96. hola juan

    pero esa cadena de conexion refleja que la db esta integrada al servicio de sql server

    o sea no tiene nada que ver lo que yo explico en este articulo

    deberias ir al Sql Server management studio y administrar la db desde el servicio de sql server

    saludos

    ResponderEliminar
  97. osea que al instalar la aplicacion en otro pc tendria que instalar la base de datos aparte?

    ResponderEliminar
  98. hola juan

    por lo que detectos del connection string que usas la db esta integrada al servicio de sql server
    puedes poner la db en la misma pc pero el .mdf lo debes adjuntar al servicio
    no estas utilizando un attach dinamica con el connection string que defines

    es mas realiza la prueba de conectarte a la db con el management studio

    saludos

    ResponderEliminar
  99. Gracias Leandro, no he logrado hacerlo pero de igualmanera Gracias

    ResponderEliminar
  100. Buenas noches Leandro estoy tratando de hacer un ejecutable en visual basic 2013 con bases de datos de Access 2013 pero me manda un error te lo describo:

    Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración
    Just-In-Time (JIT) en lugar de a este cuadro de diálogo.



    ************** Ensamblados cargados **************
    mscorlib
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5472 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    SUBTEJU
    Versión del ensamblado: 1.0.0.0
    Versión Win32: 1.0.0.0
    Código base: file:///C:/Users/CARMEN/AppData/Local/Apps/2.0/YLCQH0A3.PKZ/PQPGRL0G.ZZY/subt..tion_b3345c863a9288f0_0001.0000_7c5e9d1c8edd727f/SUBTEJU.exe
    ----------------------------------------
    Microsoft.VisualBasic
    Versión del ensamblado: 8.0.0.0
    Versión Win32: 8.0.50727.5420 (Win7SP1.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    ----------------------------------------
    System
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Windows.Forms
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5468 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5467 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Configuration
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5476 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5476 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Runtime.Remoting
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
    ----------------------------------------
    System.Data
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5459 (Win7SP1GDR.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    System.Data.DataSetExtensions
    Versión del ensamblado: 3.5.0.0
    Versión Win32: 3.5.30729.5420 built by: Win7SP1
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Data.DataSetExtensions/3.5.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll
    ----------------------------------------
    System.Windows.Forms.resources
    Versión del ensamblado: 2.0.0.0
    Versión Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Código base: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_es_b77a5c561934e089/System.Windows.Forms.resources.dll
    -----------------------------------
    Cuando esté habilitada la depuración JIT, cualquier excepción no controlada
    se enviará al depurador JIT registrado en el equipo
    en lugar de controlarlo mediante el cuadro de diálogo.

    Espero tu ayuda gracias

    ResponderEliminar
  101. hola FREDDE

    pero alli no se visualiza ningun mensaje de error, deberoas haber un Message del exception que describa porque fallo

    podrias implementar un control global de errores para capturar los problemas

    [Winforms] Control global de Errores

    y asi capturar el mensaje del fallo, quizas no se este pudiendo conectar a la db
    saludos

    ResponderEliminar
  102. Hola Leandro,

    Sabes que hace tiempo que he estado haciendo proyectos en Visual Studio y nunca me propuse terminarlos en una aplicación de escritorio.

    Hoy, estoy empezando a hacer una y para que sea facil para los clientes pensaba que la mejor manera es integrando una BD al proyecto como tu muestras.

    Ahora, estoy teniendo problemas para conectarme al archivo aparentemente. Intente con tu connection string pero nada...intente con otras y tampoco...siempre recibo el siguiente error.

    Excepción:Se detectó: "El contador de rendimiento solicitado no es un contador personalizado, se debe inicializar como ReadOnly." (System.InvalidOperationException)
    Se detectó una System.InvalidOperationException: "El contador de rendimiento solicitado no es un contador personalizado, se debe inicializar como ReadOnly."
    Hora: 25/03/2014 0:23:24
    Subproceso:[8980]

    Te pido por favor que me des una mano con esto ya que sin la conexión a la BD no puedo seguir trabajando.

    Te dejo mi correo, skype o lo que sea ni necesitas...

    Muchas gracias!

    ResponderEliminar
  103. hola Elena

    la verdad no sabria ni como ayudarte porque no mencionas siquiera que base de datos estas utilizando, que error de conexion recibes
    si la db la accedes localmente o de forma remota
    si se trata de sql server si es una distribucion express

    para poder orientar se necesita mas datos
    saludos

    ResponderEliminar
  104. la base de datos es de sql y la hice localmente y el proyecto me funciona muy bien asi, pero entonces para hacer el instalador me lleve la base de datos visual asi como aparece aqui en el blog, me muestra las relaciones en el dataset y los campos que tenia localmente, pero cuando ejecuto el proyecto me dice el error "Especificación de autorización no válida"

    la conexion de la base de datos la tengo en una clase

    Localmente lo utilizo asi:
    conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=ELENAMAGGIE-PC;Integrated Security=SSPI; Initial Catalog=PRESUPUESTOS_PROMONEY"



    Con la base de datos en visual la uso asi:
    conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=C:\..\PRESUPUESTOS_PROMONEY.mdf;Persist Security Info=False"


    No se si tenga algun error aqui o el error sea en otra parte porque primero me marco error en permisos pero ya que agrege que aceptara los permisos fue que me marco el error qe te menciono

    espero y ya me entiendas un poco mejor

    ResponderEliminar
  105. Public Class Clase_BD
    Dim conexion As New OleDb.OleDbConnection
    Dim adaptador As New OleDb.OleDbDataAdapter
    Dim tabla As New DataTable
    Dim cant_reg As Integer

    Public Sub New(ByVal Seguridad_Windows As Boolean)
    If Seguridad_Windows = True Then
    'conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=ELENAMAGGIE-PC;Integrated Security=SSPI; Initial Catalog=PRESUPUESTOS_PROMONEY"
    conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=C:\..\PRESUPUESTOS_PROMONEY.mdf;Persist Security Info=False"
    Else
    conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=192.168.1.7;Persist Security Info=True;User ID=Telena;password =ele93MAGGIE18;Initial Catalog=PRESUPUESTOS_PROMONEY"
    End If
    End Sub

    Public Sub New(ByVal ServidorSQL As String, ByVal Usuario As String, ByVal Contrasena As String, ByVal BD As String)
    conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=" & ServidorSQL & ";Persist Security Info=True;User ID=" & Usuario & ";password =" & Contrasena & ";Initial Catalog=" & BD

    End Sub

    Public Sub New(ByVal ServidorSQL As String, ByVal BD As String)
    conexion.ConnectionString = "Provider=SQLOLEDB.1;Data Source=" & ServidorSQL & ";Integrated Security=SSPI;Initial Catalog=" & BD
    End Sub

    Public Sub Actualizar_BD(ByVal Instruccion_SQL As String)
    adaptador = New OleDb.OleDbDataAdapter(Instruccion_SQL, conexion)
    tabla.Clear()
    cant_reg = adaptador.Fill(tabla)
    End Sub

    Public Function Regresar_Tabla()
    Return tabla
    End Function

    Public Function Cant_Registros()
    Return cant_reg
    End Function
    End Class






    Esta es la clase que utilizo

    ResponderEliminar
  106. hola Elena

    pero estas usando sql server, porque veo en el codigo las clases de OleDb
    porque no usas las de sql server
    o sea SqlConnection, SqlCommand, etc

    Sql server tiene sus propias librerias optimizadas para esta db, no uses oledb

    https://www.connectionstrings.com/sql-server-2008/

    la idea es que definas el Server y uses el DataSirectory si es que la db esta junto al archivo mdf

    Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;

    saludos

    ResponderEliminar
  107. Si muchas gracias ya solucione ese problema, ahora tengo otro al hacer el instalador con visual basic

    Lo que pasa que me funciona muy bien el instalador en una computadora de windows 7 pero me llevo en los requistos sql server, pero al instalarlo en windows 8 me marca error de compatibilidad por el sql server, trate de hacer el instalador con installshield y me marca el mismo error

    si no incluyo en los requisitos al sql funcionara correctamente la conexion a la base de datos?

    ResponderEliminar
  108. hola Elena

    pero estas instegrando el sql server dentro del instalador de la aplicacion?
    yo la verdad no lo aconsejaria, deja el sql server que tiene su propio instalador por fuera del instalador de la aplicacion

    asi puedes controlar la instalacion del sql server que en principio solo se deberia instalar una unica vez
    es ams que pasa si en win 8 instalas desde el instalador del propio sql server, tambien falla?

    saludos

    ResponderEliminar
  109. Hola Leandro, consultarte como puedo hacer para rellenar un combobox y textbox con datos de un dataset en wpf.

    ResponderEliminar
  110. hola leandro tengo una duda.

    ya lei todo el blog y sinceramente no entiendo lo de la cadena de conexion, el detalle es que quiero hacer una aplicacion instalable con base de datos pero no se como modificar la cadena de conexion para que funcione en otro ordenador.

    ya tambien eh intentado hacerlo de forma local pero en diferentes directorios pero aun no lo puedo hacer.

    espero tu respuesta saludos...

    ResponderEliminar
  111. hola luis

    la cadena de conexion imagino la defines en el archivo de configuracion App.config, esta basicamente es un archivo xml

    cuando compiles junto al .exe ira este archivos que puedes editar con el notepad para cambiar los datos de conexion

    aunque si la db estar siempre local con solo definir el Data Source del connection string como .\SQLEXPRESS alcanza y no debes cambiarlo
    esto por supuesto si usas sql server express

    saludos

    ResponderEliminar
  112. hola ERNESTO

    si tienes un combo podrias asignar el DataTable al DataContext el control y de alli definir el ItemsSource

    How to Bind ComboBox with DataTable: WPF

    pero hay varias formas de lograr los mismo
    saludos

    ResponderEliminar
  113. Hola Leandro, estuve viendo este tema de integrar la BD al proyecto porque tengo que empezar a generar reportes y se me generó una duda: yo la base de datos la tengo alojada en un directorio en C:\BD\MDB.SDF
    Seguí todos los pasos que explicás en el artículo y ahora el connectionString me apunta a esa dirección en el disco (donde está alojada la BD.
    Ahora bien, en el Expolorador de Soluciones tengo el iconito de la BD pero cuando selecciono me aparece en Propiedades la ruta de acceso completa y no editable una copia de la BD en la carpeta de la solución !!!...
    Ahora bien, cuando hago doble click sobre esa BD, qué archivo es el que abre en el Explorador de Servidores ?
    Ya que si no he visto mal, me está abriendo la BD que esta en la carpeta de la solución y no la que
    esta en el directorio C:\BD\

    ResponderEliminar
  114. hola LinuxMan

    pero en el Solution Explorer donde esta el proyecto tienes un .sdf ?

    porque si es asi entonces hay una db integrada al proyecto
    no se si en el connection string defines la db de otra carpeta, pero la que por defecto muestra el server explorer es la integrada al proyecto

    si quieres otra db ubicada en otro luegar, deberias hacer una busqueda definiendo una conexion distinta

    saludos

    ResponderEliminar
  115. Vaya sorpresa, al instalar mi proyecto, la bD tipo sdf le pone solo read; y hay que cambiar los atributos manualmente.
    Leandro, hay alguna otra opcion de hacerlo.

    ResponderEliminar
  116. hola gym

    es que la db no deberia estar en la carpeta de la aplicacion si es que se instala en "program files" deberias ponerlo en la carpeta App Data del usuario donde si tiene permisos de escritura el usuario

    apunto a la carpeta que se crea con
    c:\User\\AppData alli deberias poner la db y que la aplicacion apunte a este lugar

    saludos

    ResponderEliminar
  117. me podrian regalar un proyecto de ejemplo de sql 2010 con VISUAL 2012 CON BOTONES AGREGAR, BUSCAR, ELIMINAR, Y ACTUALIZAR. PORFAVOR MI CORREO ES hcajina92@hotmail.com

    ResponderEliminar
  118. Hola.

    A ver si alguien me puede ayudar.
    Hice una aplicación con vb.net 2010 y utilizo como base de datos Microsoft Access 2003.
    He generado el paquete de instalación y lo instalo en un PC que tiene Windows 8.
    Le dado a las carpetas y archivos donde se instaló todos los permisos de usuario.
    Bueno aquí viene el misterio, resulta que desde el programa hago inserciones, modificaciones, etc. en una tabla de Access y todo perfecto, pero cuando voy a la base de datos y abro la tabla para comprobar el contenido está vacía no puedo visualizar los datos, pero si que contiene información porque desde el programa los puedo ver.
    ¿Saben si el problema es de Windows 8 y Access 2003?
    Es como si Access ocultase el contenido de las tablas. Tengo que decir que hice la misma instalación en XP y Windows 7 y el contenido de las tablas se ve perfectamente.

    Gracias, espero que no sea un misterio sin resolver.

    ResponderEliminar
  119. hola ANTONIO

    lo mas cercano que tengo a lo que piedes es

    [WinForms] Edición Empleados

    saludos

    ResponderEliminar
  120. hola Miguel

    de casualidad defines en el codigo algun try..catch sin que muestre el problema, porque quizas si se produce un fallo pero sino lo informa no te enteras y por lo tanto lo das como valido

    tambien podrias validar el connection string para ver a que path de archivo access estas apuntando

    saludos

    ResponderEliminar
  121. Leandro buenas noches, veo que manejas bien el tema de las bases de datos, estoy realizando un proyecto en Visual Basic 2013, con SQL Server Enterprise 2014, cuando intento hacer la conexión con la base de datos, me indica que el archivo de la base de datos esta en uso, se encuentra en una carpeta llamada C:\\databases\ejemplo.mdf, como podría solucionar esto?

    ResponderEliminar
  122. Hola Leandro Tuttini

    sobre tu blog tengo una duda publico mi aplicacion en visual basic y todo se genera correctamente pero al momento de instalarla en otra pc me marca los siguientes errores:
    1.- No se puede abrir la base de datos c:\.....
    solicitada por el inicio de sesion
    Error inicio de sesion "Nombre del usuario"
    error inicio de sesion del usuario "Nombre del usuario"
    2.-Error relacionado con la red o especifico de la instancia mientras se establecia conexion con el servidor sql server no se encontro el servidor o este no estaba accesible.
    3.- no se puede adjuntar la base de datos CONTROL_ESCOLAR.mdf ya se encuentra una base de datos con ese nombre

    he intentado varia cadenas de conexion pero no han funcionado y esta es la que he dejado hasta el momento
    strCadenaConexion = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & System.AppDomain.CurrentDomain.BaseDirectory & "CONTROL_ESCOLAR.mdf;Database=CONTROL_ESCOLAR;Integrated Security=True;User Instance=false"

    ResponderEliminar
  123. no se si como deba cambiar la cadena de conexion al hacer el ejecutable una disculpa soy nueva en esto

    ResponderEliminar
  124. hola Dayana

    usar esto: System.AppDomain.CurrentDomain.BaseDirectory en el codigo no es correcto, deberias usar:

    AttachDbFilename=|DataDirectory|\CONTROL_ESCOLAR.mdf;

    y ademas definir en el app.confog o web.config el connection string, no necesitas ponerlo en el codigo

    si el desarrollo es web el .mdf deberia estar dentro de la carpeta App_Data, si es winforms deberia estar junto al .exe

    saludos

    ResponderEliminar
  125. gracias por su comentario pero disculpe mi torpesa mi aplicacion es windowsform se refiere al .exe al windowsform inicial o al proyecto ejecutable para crear un inslable? y a la cadena de conexion ya no le agrego el integrate ni el user instance?

    ResponderEliminar
  126. hola Dayana

    es indistinto, en ambos casos debes asegurar que el mdf este junto al .exe

    al ejecutar desde el VS, si el mdf esta integrado al proyecto (como explico en este articulo) se encargara el propio VS de realizar la copia a la carpeta \bin\Debug
    es mas puedes ir a la carpeta para validarlo

    saludos

    ResponderEliminar
  127. gracias por la ayuda y una disculpa por las molestias entonces la cadena de conexion es sin user instance ni integrate security? y esa cadena de conexion seria para publicarlo o realizar mi instalable no seria necesario cambiarla o si

    ResponderEliminar
  128. Una disculpa y urgente duda ya realice los pasos que me surgio este nuevo error al instalarlo en otra pc
    1.- Error al intentar adjuntar una base de datos nombrada automaticamente para el archivo c:\program files....ya existe una base de datos con el mismo nombre, no se puede abrir el archivo especificado o se encuentra en un recurso compartido UNC

    y declarado en el app.config quedo asi


    ResponderEliminar
  129. hola Dayana

    cuando usas attach dinamica puede ocurrir que una ejecucion no se quita de forma correcta dejando al db unida al servicio

    si te conectas con el Sql Server Management Studio deberias poder ver la db adjunta al servicio y realizar un detach para quitarla

    con esto haras que ya no exista una db adjunta con el mismo nombre y puedas correr la aplicacion sin error

    saludos

    ResponderEliminar
  130. Hola Leandro,

    Un gusto saludarte,

    Quiero comentarte una situación relacionada a la BD incluida en el proyecto que me esta dando dudas.

    Estamos desarrollando una aplicación comercial, la cual se descargará desde un servidor Web, será gratuita y tendrá embebida la Base de Datos, por la cual el usuario solo debe instalar el SETUP y listo.

    El problema es que seguramente realizaremos versiones posteriores (como todo el Software que puedes descargar gratuitamente).

    Que pasa si en el nuevo instalador vuelve a aparecer esa BD ? la anterior se pisa ?

    Imaginate que el usuario descarga la versión 1.0.0 y al mes sale la versión 1.1.0 y la descarga para tener una nueva versión.

    Yo quiero que se instale la nueva versión, pero que se respete la base anterior.. como logro esa integridad ?

    Nota : La BD tiene que ir siempre embebida, ya que para algunos la 1.1.0 será la primera versión y para los primeros, estarán actualizando Versión.

    Saludos y Gracias

    ResponderEliminar
  131. hola Pablo

    si pones la db en el instalador seguro va a pisarla, aunque no comentas es como creas la publicacion, estas usando ClickOnce?

    porque esto que planteas depende mucho del soft para crear instalaciones que utilices

    quizas deberias hacer dos instaladores, uno que tenga una version full y otra que sea un upgrade a una version mas nueva si es que ya tenia una previa

    tambien podrias evaluar de ver si en el instalador se puede definir logica con codigo, digo porque podrias simpre instalar todo el soft y aplciar alguna validacion con codigo que verifique si existe una db previa para crear un backup y reemplazarla

    saludos

    ResponderEliminar
  132. Hola Leandro una consulta al integrar una base de datos al proyecto y crear un instalador que contenga la base de datos se importan tambien los procedimientos almacenados que tiene la base de datos, o cuando se utilizan procedimientos almacenados es necesario tener la base de datos en un servidosr

    ResponderEliminar
  133. hola Jose

    un archivo mdf contiene los procedure, vistas, funciones, etc

    por lo que si, llevas los procedure tambien con la db que adjuntas de forma dinamica

    un attach dinamico no quiere decir que no este dentro de sql server, en realidad lo esta solo que la forma en com se registra no es permanente

    saludos

    ResponderEliminar
  134. Buenas noches, amigo le quiero preguntar algo que no tiene que ver con el tema que viene exponiendo aqui, mire esta es una consulta que hago en mi base de datos
    Try
    'crear dataset
    Dim dset As New DataSet
    'seleccionar los registros de las bases de datos
    codifica = "SELECT * FROM EFEDERAL"
    enca = "SELECT * FROM ENCABEZADO"
    'CARGAR LOS DATATABLE
    Dim TABCODI As New OleDbDataAdapter(codifica, Conn)
    Dim TABENCA As New OleDbDataAdapter(enca, Conn)
    'LLENAR DATASET
    TABCODI.Fill(dset, "EFEDERAL")
    TABENCA.Fill(dset, "ENCABEZADO")
    'ASIGNAR REPORTE
    Dim REPORTAR As New efederal
    'ASIGNAR EL REPORTE
    REPORTAR.SetDataSource(dset)
    REPORTAR.Refresh()
    CRPV1.ReportSource = REPORTAR
    CRPV1.Refresh()
    Catch EX As Exception
    MsgBox(EX.ToString)
    End Try
    resulta que me hace bien la consulta y me la lleva a crystal report, pero cuando quiero exportar la informacion a pdf texto excel o word, no me la exporta y me muestra lo siguiente

    referencia a objeto no establecida como referencia de un objeto te quise enviar la imagen de la pantalla pero por aqui no se puede

    ResponderEliminar
  135. Buenas noches, amigo le quiero preguntar algo que no tiene que ver con el tema que viene exponiendo aqui, mire esta es una consulta que hago en mi base de datos
    Try
    'crear dataset
    Dim dset As New DataSet
    'seleccionar los registros de las bases de datos
    codifica = "SELECT * FROM EFEDERAL"
    enca = "SELECT * FROM ENCABEZADO"
    'CARGAR LOS DATATABLE
    Dim TABCODI As New OleDbDataAdapter(codifica, Conn)
    Dim TABENCA As New OleDbDataAdapter(enca, Conn)
    'LLENAR DATASET
    TABCODI.Fill(dset, "EFEDERAL")
    TABENCA.Fill(dset, "ENCABEZADO")
    'ASIGNAR REPORTE
    Dim REPORTAR As New efederal
    'ASIGNAR EL REPORTE
    REPORTAR.SetDataSource(dset)
    REPORTAR.Refresh()
    CRPV1.ReportSource = REPORTAR
    CRPV1.Refresh()
    Catch EX As Exception
    MsgBox(EX.ToString)
    End Try
    resulta que me hace bien la consulta y me la lleva a crystal report, pero cuando quiero exportar la informacion a pdf texto excel o word, no me la exporta y me muestra lo siguiente

    referencia a objeto no establecida como referencia de un objeto te quise enviar la imagen de la pantalla pero por aqui no se puede

    ResponderEliminar
  136. Hola Mauro. Soy nuevo en esto de programar. Ya tengo la aplicación en Visual 2012 y mi servidor sql en versión 2008. Como hacer para poder instalarlo en otra maquina cliente. Si bien lo mas sencillo posible. Paso a paso. Veo que son buenos tus consejos.

    ResponderEliminar
  137. Que tal Leandro!
    Quisiera consultar contigo que veo que tienes gran experiencia en el tema: Fijate que estoy haciendo un diseño para llevar un control de salidas para el mensajero en VB2008 y tengo SQL2005, y bueno pues por un lado no conozco a grandes rasgos vb tengo un nivel de principiantes, lo que si hago es leer mucho y me meto a tutos, hice una base de datos en sql y me conecto a ella muy bien. Respecto al codigo quisiera que me guiaras si no es mucha molestia y te lo agradecere enormemente

    ResponderEliminar
  138. Hola Leandro, estoy generando el MSI de una App WinForm que tiene adjuntado un MDF, mientras estoy en modo Debug funciona perfecto, pero cuando genero el MSI, lo instalo y ejecuto la App, el MDF me queda en Solo lectura. No puedo hacer otra cosa mas que leer los datos.

    Las propiedades del MDF no estan como Readonly, y la carpeta de la App que contiene el exe no está tildado el Readonly, pero está parcialmente (punto). Que tengo que hacer para poder hacer Writable el MDF? Gracias Saludos!

    ResponderEliminar
  139. hola Germán

    en que carpeta se instala el mdf ? porque si este va junto a la aplicaicon en la carpeta "Program Files" puede que no tengas permisos de escritura sobre esta salvo que te autentiques como administrador local del equipo

    podrias usando el manifest indicar a tu aplicacion que ejecute como admin
    Start Application With Administrative Rights on Windows Vista / 7

    o quizas sea mejor indicar en el instalador que el mdf se ubique en otra carpeta que si tengas permisos de escritura

    saludos

    ResponderEliminar
  140. Gracias Leandro, si tal cual vos decis, cambié la ruta de instalación de MDF y anduvo perfecto.

    Al margen, en mi APP tengo una DLL de Flash, la cual es adjuntada en el instalador pero al ejecutar el setup en la PC del cliente esa DLL no se registra. Que solucion me propones para que se registre automaticamente? Hay alguna manera?

    Desde ya muchas gracias!

    ResponderEliminar
  141. hola Germán

    entiendo que flash no solo usa una dll .net sino que requiere del instalador que incluya las dll COM, imagino te refieres a estas necesitan registrarse

    quizas debas ver de lanzar la instalacion/actualizacion de flash para este punto, no se si con una dll alcance

    saludos

    ResponderEliminar
  142. Buenas tardes amigos . he desarrollado un sistema para control de un gimnasio, nunca había usado visual 2010 . al instalarlo todo sale perfecto incluso la base de datos se instala automáticamente y el programa corre perfecto .Pero me gustaría saber donde almacena el sistema esa base de datos al instalar para así poderla respaldar . Gracia

    ResponderEliminar
  143. Una consulta hice un sistema con base de datos sql compact con visual studio 2012 ..!!! creado el instalador del sistema incluido con la base de datos.! lo instale en un sistema operativo windows 7 tb al mismo tiempo instalando algunos pequeños archivos necesarios para que funcione el sistema..!! FUNCIONA TODO BIEN pero la gran duda es que si por algun motivo lo formatean la compu donde esta funcionando el sistema se perderan todos los datos y tb el sistema.!! como puedo hacer un backup de la base de datos para luego instalarlo de nuevo el sistema y agregar la base de datos con los datos recuperados..!!

    ResponderEliminar
  144. hola David

    si la db es Sql Compact realizar un backup seria tan simple como copiar y pegar en otra carpeta el .sdf

    en definitiva la db es un archivo, puedes usar el File.Copy() para generar una copia a una carpeta compartida de otra pc

    saludos

    ResponderEliminar
  145. Leandro buen día:

    Una consulta. Estoy desarrollando una aplicación en vb.net 2012 y sql server 2012. Ambas con la versión Express. Sin embargo cuando voy a agregar->nuevo elemento->Informe este elemento no existe. Hay forma de activarlo? Ya logre configurar el control Report Viewer pero no es posible crear los archivos .Rdlc. Gracias.

    ResponderEliminar
    Respuestas
    1. hola
      Es que la version express de VS no incluye soporte para reportes de ningun tipo
      Quizas deberias evaluar usar una version completa o quizas pasarte al VS 2013 Community sino recuerdo mal lo incluye
      sino es asi entonces deberias pasarte a una version Professional o superior
      saludos

      Eliminar
  146. Hola Leandro, gracias por todostus siempre acertados consejos, nos ayudas muchisimo GRACIAS
    cariños desde Venezuela

    ResponderEliminar
  147. Gran aporte amigo Leandro. Muchas gracias por compartir.

    ResponderEliminar
  148. Buenas Leandro,

    Mi pregunta es, cómo hacer un instalador de una aplicación que conecta a una Base de datos remota, es decir mi BD esta en un servidor en red y la aplicación quedará en los equipos cliente, hay algúna configuración especial?

    Saludos

    ResponderEliminar
    Respuestas
    1. hola
      Para creo un instalador podrias creo un Setup Project, aunque esto depende de la version de VS que utilices, desde VS2012 este tipo de proyecto ya no existe, pero se puede agregar
      Microsoft Visual Studio 2013 Installer Projects
      aunque tambien podrias usar InstallShield
      Si la db esta en red simplemente cambiarias el connection string del archivo de configuracion
      saludos

      Eliminar
  149. Leandro muy bueno tu blog, ya pude hacerlo y me funciono muy bien. pensaba que no se agregaban pero vi que era la otra BD en debug y ya, solucionado. Ahora Tu sabes donde puedo encontrarla para poder hacer un respaldo o algo para no perder los datos en caso de que falle el disco duro o formatien la pc. Saludos.

    ResponderEliminar
    Respuestas
    1. hola
      Si la db es un archivo el backup simplemente seria copiandolo a otra carpeta, podrias usar el File.Copy() aunque seguramente para poder hacerlo deberias verificar que no haya ninguna conexion activa
      Si usaste el using para definir las SqlConnection no deberias tener problemas
      saludos

      Eliminar
    2. Gracias, deja buscarlo para ver donde esta, lo que pasa que ya lo instale con el instalador de VB. ahora solo es encontrarlo para hacer el respaldo. Gracias.!!

      Eliminar
  150. Hola leandro, gracias por tus enseñanzas.
    quisiera hacer solo una preguntita.
    cada vez que hago un ejecutable con vs y access al momento de arrancar el programa instalado NO me reconoce la base de datos, mi la ruta ni nada, a pesar de copiar el access en debug y bin

    porque pasa esto?
    si me puedes ayudar por favor.
    gracias

    ResponderEliminar
    Respuestas
    1. hola
      Cuando dices hacer un ejecutable que implicaria? o sea presionas F5 en el VS para iniciar la aplicacion
      Porque mencionas "programa instalado" si ejecutas desde el VS no se instala nada
      Cuando ejecutas desde el VS es que se copia la db al bin\Debug porque es alli donde trabaja el VS en runtime
      Usas el DataDirectory en el connection string ?
      saludos

      Eliminar
  151. Hola leandro quiero crear un instlador para que se instale en cualquier computador y quiero incluir la bd sqlite que manejo en mi computador, me podrias ayudar porfa. gracias

    ResponderEliminar
    Respuestas
    1. hola
      Imagino te refieres a cualquier computadorea que tenga windows, no?
      Que version de VS estas utilizando? lo pregunto porque podrias crear un Setup Project, pero no todas las versiones del VS lo incluyen (o quizas usar InstallShield)
      Pero existen extensiones para volver habilitarlo
      Microsoft Visual Studio 2013 Installer Projects Gratis
      saludos

      Eliminar
    2. si, cualquier computadora con windows, utilizo vs 2013 ya realizo el instalador por properties/publicar, pero no se como agregar la bd sqlite.

      Eliminar
    3. agradezco demasiado si me puedes indicar como agregarla, puesto que yo me conecto con ella configurando la ruta de donde la tengo en mi computadora en App.config

      Eliminar
    4. hola
      Si usas la opcion de publish estas creando un instalador de ClickOnce, en las configuracion del proyecto en la solapa publish podrias cambiar las opciones
      Como veras tienes el boton de files en donde podrias agregar el archivo de la db sqlite
      saludos

      Eliminar
  152. Hola Leandro, gracias por tus aportes que ayudan mucho.

    quisiera molestarte con un problema que tengo y no lo he podido solucionar. trabajé muchos años con visual 6 y cuando hacia los paquetes de instalación vinculaba la bd en acces al proyecto y al momento de instalarlo en un pc funcionaba sin problemas sin necesidad de instalar acces (supongo el instalador llevaba los archivos necesarios para el funcionamiento sobre la bd). hace un tiempo pasé a visual studio y cuando creo el paquete de instalación incluyendo la bd de acces .accdb al momento de instalarlo en un pc y ejecuto el programa me sale un error (no recuerdo muy bien el mensaje pero tiene que ver conque no esta registrado el acces) y la única solución encontrada es instalar el acces completo en el pc que hago la instalación de mi aplicación. quisiera saber si conoces como hacer para que mi paquete instalador lleve esos archivos o .dll que requiere acces para funcionar.
    saludos

    ResponderEliminar
    Respuestas
    1. hola
      Como estas conectando a la db access ? usas las librerias de ado.net o sea OleDbConnection, OleDbCommand ,etc
      Si suas estas libreria no necesitarias tener Access instalado, ahora si usas las librerias COM de adodb en ese caso me parece que si es necesario, el tema es que estas librerias no deberias usarlas
      saludos

      Eliminar
  153. buenas tardes leandro tengo un inconveniente con mi aplicacion que desarrolle ojola me puedas ayudar
    cree un programa en visual estudio 2010 donde se conecta a una base de datos remotamente en sql server 2005
    todo me funciona bien inserto datos borro consulto. solo que despues de 30seg aprox la aplicacion se traba en leer los datos de la base de datos y despues de sigue normal pero esto sigue igual cada 30 seg aprox.

    me faltara configurar algo en el sql server o mi programa para evitar esto
    saludos gracias

    ResponderEliminar
    Respuestas
    1. pude resolver mi problema era porque mi servidor donde esta la base de datos esta con una ip 192.168.1.80
      y donde instalaba mi programa tiene la ip 192.168.0.18 estaban en diferente segmento. solo agrege ese segmento y se soluciono slaudos

      Eliminar
  154. Hola leandro, buenas noches. Mi consulta, terminine d hacer un sistema d venta en VS 2015 cn una DB en acces pero al crear el instalador no funciona en otras Pc. Si kmbio la direccion en la cadena d conexion y copio la BD en el otro pc funciona bien, como puedo hacer para que funcione sin necesidad d kmbiar nada.

    ResponderEliminar
    Respuestas
    1. hola
      No se como estaras creando el instalador pero si la carpeta de destino es "Program Files" puede que no tengsas acceso de escritura con el usuario con el cual te autenticas, quizas debas de definir en el manifest del proyecto para que ejecute con permisos de administrador.

      How To Make A VB.NET Application Always Run In Administrator Mode?

      saludos

      Eliminar
  155. Hola leandro, buenas tardes. Mi consulta, tengo un aplicación en visual studio con una base de datos en sql, mi pregunta es existe alguna forma de que al crear el instalador e instalarla en otra pc se pueda usar sin necesidad de instalar el sql?

    ResponderEliminar
  156. Estimados, que necesita tener la maquina del usuario final para que la comexion de la app y la LocalDB sea posible.

    ResponderEliminar