PDA

Ver la versión completa : Ayuda con VB



Adonis74
13/12/2009, 00:48
Creo un nuevo proyecto en Visual Studio 2008, el ambiente es VB para crear una aplicación con una interfaz de usuario de Windows. (.NET Framework 3.5) el nombre del proyecto es “Prueba”.
Al proyecto le agrego un Formulario (Form1), también agrego una base de datos basada en servicios, con nombre “Transformadores.mdf” (puedo agregarle una local). Esa base de datos me genera un DataSet llamado TransformadoresDataSet.xsd
Al formulario agrego un Datagrid1
A la base de datos agrego una tabla llamada “Compañías” con una columna llamada “nombre”
Al formulario agrego un TextBox (TextBox1) y un botón (Button1)
En las propiedades del Datagrid1 (DataSource) le agrego un origen de datos del proyecto, elijo “Base de datos”, como conexión de datos para conectarme a la base de datos escojo “TransformadoresConectionString” (My settings) al elegir los objetos de la base de datos que deseo tener en el conjunto de datos marco (tablas), al finalizar se genera el DataSet que contendrá los datos “TransformadoresDataSet1” y en el Datagrid1 del Form1 aparece la tabla compañías con su única columna “nombre” y en la parte inferior del formulario me aparecen estos tres elementos (TransformadoresDataSet1, CompañiasBindingSource, CompañiasTableAdapter) esto es correcto.
En el evento Click del Button1 escribo el siguiente código:

CompañiasTableAdapter.Insert(TextBox1.Text)
TextBox1.Text = ""

Le estoy indicando al botón que me inserte el texto del TextBox1 en la tabla “Compañías, y a la vez en su segundo evento me borre el texto del TextBox1.
Le agrego un temporizador (Timer1) para que a los dos segundos me actualice los datos del Datagrid1 con los datos que envío a la tabla compañías de la base de datos a través del Button1
Corro el programa, escribo un nombre en el TextBox1 doy enviar por el Button1, a los dos segundos me aparece el nombre en el datagrid1, pero no así en la tabla compañías de la base de datos, es decir, no se guarda en la tabla compañía de la BD, cuando muestro los datos de la tabla compañías en la BD no existe ningún registro.
Cuando muestro los datos de la tabla compañías en la BD le escribo un nombre, corro el programa y me aparece el nombre en el datagrid del formulario.

Este es el código que he utilizado:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'TransformadoresDataSet1.Compañias' Puede moverla o quitarla según sea necesario.
Me.CompañiasTableAdapter.Fill(Me.TransformadoresDa taSet1.Compañias)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CompañiasTableAdapter.Insert(TextBox1.Text)
TextBox1.Text = ""

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.CompañiasTableAdapter.Fill(Me.TransformadoresDa taSet1.Compañias)
End Sub
End Class

Lo que necesito es que el texto se envíe desde el TextBox1 a la tabla compañía de la BD y no se borre, y que ese texto luego de ir allí, se visualice en el Datagrid del formulario, simplemente eso, les he dado todos esos detalles para que se les haga mas fácil a la hora de interpretar la prueba, les estaré agradecido de su colaboración, quizás sea una sencillez, pero no he dado con la solución, y me urge para el proyecto original.

Macuy
14/12/2009, 15:40
Podrias poner el codigo donde haces el insert a la db??

Xaludos

Adonis74
18/12/2009, 00:29
Saludos Macuy.

Este es el código que utilizo para hacer el insert en la bd:



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CompañiasTableAdapter.Insert(TextBox1.Text)
TextBox1.Text = ""

End Sub


Te agradeceria mucho, que intentaras ayudarme, quizás alguna idea, me haga ver el horizonte, la verdad es que el proyecto original lo tengo detenido por esto que expongo en el mensaje 1ro. Esto me sucede cuando utilizo un servidor local es decir mi pc como server, sin embargo hice una prueba alojando la bd en otro servidor y me funciona, pero la prueba la hice en C# y necesito programar en VB.

Macuy
18/12/2009, 15:30
Saludos Macuy.

Este es el código que utilizo para hacer el insert en la bd:



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CompañiasTableAdapter.Insert(TextBox1.Text)
TextBox1.Text = ""

End Sub


Te agradeceria mucho, que intentaras ayudarme, quizás alguna idea, me haga ver el horizonte, la verdad es que el proyecto original lo tengo detenido por esto que expongo en el mensaje 1ro. Esto me sucede cuando utilizo un servidor local es decir mi pc como server, sin embargo hice una prueba alojando la bd en otro servidor y me funciona, pero la prueba la hice en C# y necesito programar en VB.

Me parece raro... posiblemente sea alguna configuracion puntual en tu pc, pues si no, nunca funcionaria en otro equipo.

Sinceramente no entiendo el porque de tu error... pero lo otro que puedes hacer, es crear un dll en c# y lo pones en tu codigo VB, y que este dll solo te sirva para manejar la data...

Xaludos

Arielo
18/12/2009, 16:59
1 - La tabla es llamada "compañias" ..... ¿No afecta esa "Ñ" en el nombre?



2 - Podrías probar escribir una sentencia, y luego hacer un ExecuteNonQuery sobre ella. ¿Probaste de esta manera?



Dim Conec As New OleDb.OleDbConnection
Dim Sent As New OleDb.OleDbCommand
Conec.ConnectionString = CadenaConexion
Sent.Connection = Conec
Sent.CommandText = "INSERT INTO Compañias (Nombre) VALUES (" & TextBox1.Text & ")"
Conec.Open()
Sent.ExecuteNonQuery()
Conec.Close()


.