none
Conexión a SQL Server CE desde visual basic express 2008

    Question

  • Estoy haciendo una pequeña aplicación en Visual Basic express 2008 utilizando como base de datos SQL.sdf que proporciona la versión express. El inconveniente que tengo es que por mas que he tratado de insertar los datos a la base de datos no me ha sido posible.

    Los datos que tengo que son de unas cajas de texto y que por medio de un botón quiero guardarlos en la BD no me deja guardarlos y me ha sido imposible. Lo extraño es que si le hago un update a la base de datos si me deja realizar cambios desde la aplicación, pero para insertar un registro nuevo no lo logro. He buscado por todos lados, pero ningún ejemplo me sirve, ya intente una vez mas con este que les pongo por acá y tampoco me sirvió:

    http://msdn.microsoft.com/es-es/library/system.data.sqlserverce.sqlcedataadapter.insertcommand(v=vs.90).aspx

    Si tienen un ejemplo sencillo de como insertar, estaré agradecido.

    Saludos

    Sunday, February 27, 2011 4:58 AM

Answers

  • hola

    como estoy seguro que eso es lo que pueda estar pasando con la copia de la base de datos que me mencionas?

    ve a la carpeta \bin\Debug y calida que tiene el sdf alli y en cada corrida la fecha de modificacion del archivo cambia, lo cual indica que cada vez que ejeutas se crea una copia

    puedo de alguna forma cuando cierre mi aplicación que replique los la información para que no tenga dudas en los datos que estoy manejando?

    en realidad podrias cambiar el connection string ya no uses el |DataDirectory|, pon la ruta directa al sdf que esta a nivel de proyecto, de esta forma aunque copie el VS el sdf yu estaras trabjado con la que esta en el proyecto

    o sea

    Dim Conexion As New SqlCeConnection ("Data Source=c:\pathproyecto\BD.sdf")

     

    cual va a ser el comportamiento en este caso la base de datos trabaja sin problemas?

    asi es, este comportamiento solo es porque estas en un entorno de desarrollo, en dodne el sdf que ves integrado al VS se copia para que lso datos originales se mantengan intanctos antes las pruebas, por eso es que el uso en esa corrida se aplcia a la db en el \bin\Debug

    pero liuego de hacer el deploy final en la pc del usuario esto ya no se produce porque estaras con el .exe directo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, February 28, 2011 1:47 AM

All replies

  • hola

    imagino este .sdf esta integrado al Visual Studio en tu proyecto y que usas el |DataDirectory| en el connection string ?

    si es asi puede que el insert si lo realice solo que no al sdf que tu piensas, sino al que esta en la carpeta \bin\Debug

    recuerda que se crea una copia del sdf cada vez que ejecutas la aplciaicon desde el VS

    valida que no esta pasando esto que comento, de ser asi tu aplciacion funciona perfecto, solo que los datos estaran prsentes solo mientras esta se ejecute, en cuanto la detengas y vuelvas a eejcutar desde el VS el sdf se reemplazara por el que tiene en el proyecto a la carpeta \bin\Debug donde se accede mientras es ejedutada la aplicacion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Sunday, February 27, 2011 5:15 AM
  • Hola Leandro

    Me parece que eso es lo que me está pasando. Cuando empecé a crear la aplicación agregué un nuevo elemento el cual fue la base de datos CE. Te comento un poco mas, tengo varias cajas de texto que recibe lo que quiero guardar en la base de datos y un botón que envía los datos. La conexión es como esto:

    Dim Conexion As New SqlCeConnection ("Data Source=|DataDirectory|\BD.sdf")

    Ahora como estoy seguro que eso es lo que pueda estar pasando con la copia de la base de datos que me mencionas?, puedo de alguna forma cuando cierre mi aplicación que replique los la información para que no tenga dudas en los datos que estoy manejando?

    Otra pregunta Leandro, una vez que termine la aplicación y la ponga a trabrajar en otro equipo, totalmente independiente donde tengo visual basic express, cual va a ser el comportamiento en este caso la base de datos trabaja sin problemas?

    Gracias por tu ayuda.

    Monday, February 28, 2011 12:29 AM
  • hola

    como estoy seguro que eso es lo que pueda estar pasando con la copia de la base de datos que me mencionas?

    ve a la carpeta \bin\Debug y calida que tiene el sdf alli y en cada corrida la fecha de modificacion del archivo cambia, lo cual indica que cada vez que ejeutas se crea una copia

    puedo de alguna forma cuando cierre mi aplicación que replique los la información para que no tenga dudas en los datos que estoy manejando?

    en realidad podrias cambiar el connection string ya no uses el |DataDirectory|, pon la ruta directa al sdf que esta a nivel de proyecto, de esta forma aunque copie el VS el sdf yu estaras trabjado con la que esta en el proyecto

    o sea

    Dim Conexion As New SqlCeConnection ("Data Source=c:\pathproyecto\BD.sdf")

     

    cual va a ser el comportamiento en este caso la base de datos trabaja sin problemas?

    asi es, este comportamiento solo es porque estas en un entorno de desarrollo, en dodne el sdf que ves integrado al VS se copia para que lso datos originales se mantengan intanctos antes las pruebas, por eso es que el uso en esa corrida se aplcia a la db en el \bin\Debug

    pero liuego de hacer el deploy final en la pc del usuario esto ya no se produce porque estaras con el .exe directo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, February 28, 2011 1:47 AM
  • Gracias Leando por tu respuesta, creo que ahora sí me queda claro, te agradezco el aporte. Otra pregunta. Adjunté un Grid a un formulario para que me muestre los datos que estoy incluyendo en una de las tablas de la bdCE y me carga sin problemas, pero esos registros del Grid quiero exportarlos a Excel el cual ya logré hacerlo sin embargo hay dos columnas que son Fecha Inicial y Fecha Final y al exportar los datos a excel me salen los datos como están en el grid que toma de la bd con la fecha y hora, la pregunta es como hago para que en el grid solo me muestre la fechas sin la hora para que despues al exportar los datos a excel solo aparezca la fecha.

    El código que tengo es este:

     

    Conexion.Open()
                        Dim conexadp As SqlCeDataAdapter = New SqlCeDataAdapter("SELECT IDPRODUCTO, PRODUCTO, FECHA_INICIAL, FECHA_FINAL FROM MATERIAL", Conexion)
                        Dim conexdata As DataSet = New DataSet()
                        conexadp.Fill(conexdata)
                        Conexion.Close()
                        Me.grid.Dock = DockStyle.Fill
                        Me.grid.DataSource = conexdata.Tables(0)
                        Me.grid.AutoResizeColumns()

    Tuesday, March 01, 2011 4:20 AM