C# para principiantes - DotNetClubs
en

DotNetClubs

Comunidades de estudiantes entusiastas de la tecnología

C# para principiantes

Último artículo 10-21-2008 22:21 escrito por Kuragari. 11 respuestas.
Página 1 de 1 (12 elementos)
Ordenar mensajes: Anterior Siguiente
  • 08-31-2006 22:27

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    C# para principiantes

    Bien, escribo este post para haber si consigo solucionar mi problema con C# y las bases de datos, estoy empezando a iniciarme en el mundo de la programación (todo justo termino primero de carrera y empiezo con as recuperaciones).

    Para empezar decir que he seguido el video sobre C#  (Curso Introducci_n a .NET con CSharp) que se encuentra dentro del VS2005 de la ftp de los DotNetClubs. Allí se crea una aplicación para gestionar un video club y, a pesar que he seguido los pasos al pié de la letra, que me descargué el código original, que hice todas al comprobaciones necesarias, no consigo añadir datos a la SQL de la solución.

    El formulario que se encarga de añadir datos a la SQL está formado por varias cajas de texto que contienen los datos a añadir y de dos botones, uno para cerrar el formulario y otro para añadir los datos a la SQL. El código asociado al botos "añadir" es el siguiente:

    private void bAñadir_Click(object sender, EventArgs e)
            {
                if (this.Validate())
                {
                    this.sociosBindingSource.EndEdit();
                    this.sociosTableAdapter.Update(this.sociosDS.Socios);
                    MessageBox.Show("Socio insertado correctamente");
                    this.sociosBindingSource.AddNew();
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show(this, "Validation errors occurred.", "Save", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                }
            }

    He comprobado que este código es el mismo que el que se usa en el video, así pues no comprendo porqué cuando lo ejecuto no se añaden los nuevos datos. ¿Puede ser que tan solo se puedan añadir datos cuando ejecutas el programa y no poder hacerlo cuando lo "construyes" (¿compilas?)? ¿Puede ser que sea debido a la versión de VC#? Yo uso el siguiente:

    Microsoft Visual Studio 2005
    Version 8.0.50727.42  (RTM.050727-4200)
    Microsoft .NET Framework
    Version 2.0.50727

    Installed Edition: C# Express

    Microsoft Visual C# 2005   76544-000-0000011-00126
    Microsoft Visual C# 2005

    Si alguien sabe lo que me pasa, por favor, echadme un cable. Gracias.

    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 0
  • 08-31-2006 23:22 en respuesta a

    • vargas
    • Contribuyente Top 10
    • Se unió el 07-11-2006
    • Sevilla
    • Envíos: 193
    • Puntos: 45

    Re: C# para principiantes

    Hola tío :)

    Tu problema puede ser debido a una cosa muy sencilla...
    ¿Te has fijado si el sociosTableAdapter tiene los métodos de actualizar, insertar y eliminar puestos? Eso se mira en el diseñador del DataSet. En caso de que no los tenga, no son más que unas simples sentencias de SQL. Por lo general, se te suele añadir automático, aunque otras veces no (depende si tu dataset tiene elegidos los campos claves en el método fill y/o getdata).

    Saludos.
    • Puntos de post: 0
  • 09-01-2006 15:34 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes

    Gracias por contestar y por estar ahí.

    He estado toqueteando por aquí y por allí, referente a lo que me dijiste. Las propiedades de mi sociosTableAdapter son estas:

    - Connection                    DBConnectionString (String)
           Name                        DBConnectionString (String)
           Modifier                    (internal)
           ConnectionString      DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf; Integrated Security=True;User Instance=True
           ConnectionModifier   Internal
    - DeleteCommand             (DeleteCommand)
           CommandText           DELETE FROM [dbo].[Socios] WHERE (([Dni] = @Original_Dni) AND ([Nombre] = @Original_Nombre) AND ([Apellidos] = @Original_Apellidos) AND ((@IsNull_Telefono = 1 AND [Telefono] IS NULL) OR ([Telefono] = @Original_Telefono)) AND ([Email] = @Original_Email))
           CommandType          Text
           Parameters                 (Collection)
           GenerateDBDirectMethods       False
    - InsertCommand               (InsertCommand)
           CommandText           INSERT INTO [dbo].[Socios] ([Dni], [Nombre], [Apellidos], [Telefono], [Email]) VALUES (@Dni, @Nombre, @Apellidos, @Telefono, @Email);
    SELECT Dni, Nombre, Apellidos, Telefono, Email FROM Socios WHERE (Dni = @Dni)
           CommandType          Text
           Parameters                  (Collections)
    Modifier                             Public
    Name                                 SociosTableAdapter
    - SelectCommand              (SelectCommand)
           CommandText            SELECT Dni, Nombre, Apellidos, Telefono, Email FROM dbo.Socios
           CommandType           Text
           Paramateres                (Collection)
    - UpdateCommand             (UpdateCommand)
           CommandText            UPDATE [dbo].[Socios] SET [Dni] = @Dni, [Nombre] = @Nombre, [Apellidos] = @Apellidos, [Telefono] = @Telefono, [Email] = @Email WHERE (([Dni] = @Original_Dni) AND ([Nombre] = @Original_Nombre) AND ([Apellidos] = @Original_Apellidos) AND ((@IsNull_Telefono = 1 AND [Telefono] IS NULL) OR ([Telefono] = @Original_Telefono)) AND ([Email] = @Original_Email));
    SELECT Dni, Nombre, Apellidos, Telefono, Email FROM Socios WHERE (Dni = @Dni)
           CommandType           Text
           Paramaters                  (Collection)

    ... y por lo que creo que están bien, no? o no entendí correctamente lo que me decias? (muy probablemente... ;))
    He provado de hacer lo mismo con una base de datos de acces, objetos ole (OleDbCommand, OleDbDataAdapter), dos DataSet y un DataGrid en vez de un formulario y el resultado es el mismo: no se actualiza la tabla, pero si en la tabla ya hay datos, tampoco los veo en el DataGrid del programa.

    Realmente no comprendo lo que me pasa.
    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 0
  • 09-01-2006 15:49 en respuesta a

    • vargas
    • Contribuyente Top 10
    • Se unió el 07-11-2006
    • Sevilla
    • Envíos: 193
    • Puntos: 45

    Re: C# para principiantes

    La respuesta que te voy a dar puede parecer trivial, pero quizás no lo hayas tenido en cuenta...

    ¿Tiene permiso tu usuario de windows para escribir en esa base de datos? Fíjate bien en eso. A veces puede ser una fuente innumerable de errores indetectables.
    ¿Está asociado ese código el evento click al botón añadir?
    ¿No te sale ningún error por ahí?

    ¿Por último, has probado hacer la ejecución paso a paso para ver si entra y dónde lo hace?

    En fin... mira un poco. Darás con la clave.
    • Puntos de post: 0
  • 09-01-2006 17:04 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes

    Muchas gracias, Vargas. Estoy empezando a arreglar algo, por lo menos en la solución vinculada a la base de acces. Gracias.
    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 0
  • 09-01-2006 17:43 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes

    Ahún así tengo una preguntilla:

    Cuando creo el oleDbDataAdapter, me sale un cuandro de dialogo que me pregunta si quiero copiar la base de datos a al solución y modificar la connexión que acabo de crear. Si le doy que si me sucede lo anteriormente explicado: no puedo añadir ni editar. Si le digo que no puedo usar la BD dentro del proyecto. Entonces mi pregunta es: ¿si creo una BD dentro de la solución o copio una de fuera dentro, no puedo trabajar con ella hasta ahber terminado el programa? Que por cierto, tampoco se como "terminar" un programa, cuando uno ya esta satisfecho con el programa que ha hecho, ¿como lo termina? me refiero a generar un exe usable en qualquier ordenador o un installer.

    Otar cosa que me pasa ahora, recien arreglado el problema de modificar la base de datos, es que cuando genero una consulta a un campo concreto de la base de datos des de el codigo del programa, al momento de ejecutar la consulta me sale el siguiente error, ponga el nombre que ponga a ese campo:
    System.Data.EvaluateException was unhandled
      Message="Cannot find column [nom_cognom]."
      Source="System.Data"
      StackTrace:
           at System.Data.NameNode.Bind(DataTable table, List`1 list)
           at System.Data.BinaryNode.Bind(DataTable table, List`1 list)
           at System.Data.DataExpression.Bind(DataTable table)
           at System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
           at System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
           at System.Data.DataTable.Select(String filterExpression)
           at AgendaDeTelefons.BuscarContacteForm.btBuscar_Click(Object sender, EventArgs e) in C:\Documents and Settings\Naamath_Kuragari_\Mis documentos\Visual Studio 2005\Projects\AgendaDeTelefons\AgendaDeTelefons\BuscarContacteForm.cs:line 33
           at System.Windows.Forms.Control.OnClick(EventArgs e)
           at System.Windows.Forms.Button.OnClick(EventArgs e)
           at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           at System.Windows.Forms.Control.WndProc(Message& m)
           at System.Windows.Forms.ButtonBase.WndProc(Message& m)
           at System.Windows.Forms.Button.WndProc(Message& m)
           at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
           at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           at System.Windows.Forms.Application.Run(Form mainForm)
           at AgendaDeTelefons.Program.Main() in C:\Documents and Settings\Naamath_Kuragari_\Mis documentos\Visual Studio 2005\Projects\AgendaDeTelefons\AgendaDeTelefons\Program.cs:line 17
           at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
           at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           at System.Threading.ThreadHelper.ThreadStart()
    Primero pense que era debido al nombre del campo (que tubiera tildes, espacios o algo) pero resulta que no es eso ya que he re-echo la base de datos con variedades de nombre y luego modificando los dataset y etcetera... así que vuelvo a estar perdido otra vez... ¿será este my destino, vagar perdido para siempre?


    Gracias por enésima vez!!!
    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 0
  • 09-12-2006 13:13 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes

    Posteo aquí, pero lo que posteo no tiene nada que ver con los posts anteriores, pero como que se trata de una duda de principiante, pues aquí la pongo, en C# para principiantes.

    Lo que ahora tengo es un formulario que permite escribir dentro de una textbox y guardar su contenido en un fichero.txt o cargar lo que haya en uno a la textbox.
    Si lo que ahora quiero es poder cambiar el formato de texto lo que hago es cambiar la fuente, el forecolor y esas cosas de la textbox, pero si lo que quiero es cambiar solo el formato de una palabra sin que el resto e texto pierda su formato, ¿como debería de hacerlo?

    Gracias por su paciencia.

    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 0
  • 09-12-2006 18:47 en respuesta a

    • vargas
    • Contribuyente Top 10
    • Se unió el 07-11-2006
    • Sevilla
    • Envíos: 193
    • Puntos: 45

    Re: C# para principiantes

    Tú necesitas el RichTextBox... documentate sobre él porque su funcionamiento es algo más complicado que el TextBox.

    Espero haberte sido de ayuda.
    • Puntos de post: 0
  • 09-13-2006 0:34 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes

    te lo resumo todo en una expresión:

    ¡MOLA!

    ^^

    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 0
  • 09-20-2006 22:20 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes


    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 20
  • 08-13-2008 23:14 en respuesta a

    • Mats_xz
    • Contribuyente Top 500
    • Se unió el 08-13-2008
    • Envíos: 1
    • Puntos: 20

    Re: C# para principiantes

     

    Kuragari podrias decirme como solucionaste el problema del update en la app de msdn ya que me pasa lo mismo y no doy con la solucion

    saludos,  

     

    • Puntos de post: 20
  • 10-21-2008 22:21 en respuesta a

    • Kuragari
    • Contribuyente Top 25
    • Se unió el 08-27-2006
    • DotNetClub Z2
    • Envíos: 32
    • Puntos: 110
    • DotNetClub_Coordinadores
      DotNetClub_Miembros

    Re: C# para principiantes

     Pues realmente no puedo dartela, por la simple razón que abandoné ese proyecto. Lo siento. En cuanto disponga de tiempo lo vuelvo a intentar y te comento.

     

    Saludos!

    Carles Hernádez
    Coordinador DotNetClub Z2
    http://www.kuragari.eu
    • Puntos de post: 5
Página 1 de 1 (12 elementos)
(c) DotNetClubs 2008
Ofrecido por Community Server (Commercial Edition)