Foros del Web » Programación para mayores de 30 ;) » .NET »

Llamar a métodos desde otro form

Estas en el tema de Llamar a métodos desde otro form en el foro de .NET en Foros del Web. Que tal a todos, les cuento que este es mi problema, en el Form1 tengo un codigo que me conecta a mi base de datos, ...
  #1 (permalink)  
Antiguo 06/03/2014, 18:02
 
Fecha de Ingreso: enero-2011
Ubicación: Del otro lado del monitor
Mensajes: 43
Antigüedad: 13 años, 3 meses
Puntos: 0
Llamar a métodos desde otro form

Que tal a todos, les cuento que este es mi problema, en el Form1 tengo un codigo que me conecta a mi base de datos, el problema es que lo quiero volver a usar en un Form2 este metodo para crear la conexion:
Esto tengo en el Form1

Código C#:
Ver original
  1. public partial class Form1 : Form
  2.     {
  3.         System.Data.SqlClient.SqlConnection con;
  4.  
  5. public void conectarbd()
  6.         {
  7.             con = new SqlConnection();
  8.             con.ConnectionString = "Integrated Security=SSPI;Initial Catalog=Empleados;Data Source=CRISTINA\\SQLEXPRESS";
  9.             try
  10.             {
  11.                 con.Open();
  12.  
  13.             }
  14.             catch (Exception)
  15.             {
  16.                 MessageBox.Show("Conexion Fallida");
  17.             }
  18.         }
  19. }

Este lo mando a llamar cuando Form1_Load para que se conecte
ahora en mi Form2 quiero usar esta misma conexion. Y aqui viene mi problema;

En el Form2:

Código C#:
Ver original
  1. private void Form2_Load(object sender, EventArgs e)
  2.         {
  3.             conectarbd();            
  4.         }
  5.  
  6.         private void button1_Click(object sender, EventArgs e)
  7.         {
  8.             SqlDataAdapter da = new SqlDataAdapter("INSERT INTO Users (Nombre,Correo) Values ('" + textBox1.Text + "', '" + textBox2.Text + "')",con);
  9.             DataSet ds = new DataSet();
  10.             da.Fill(ds);
  11.         }

Fue entonces cuando me di cuenta que "con" nunca obtenía ningún valor entonces no se modificaba mi base de datos.

Entonces como le hago, mi solución provisional fue volver a escribir toda la conexión en el form2 para que con si tuviera algun valor, pero es lo que quiero evitar, repetir el mismo codigo cuando ya lo tengo hecho en otro lado.
Espero haber sido claro.
Saludos
  #2 (permalink)  
Antiguo 07/03/2014, 08:33
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Llamar a métodos desde otro form

En este caso estás teniendo un problema de diseño.

Tendrías que crear una clase que implemente el acceso a la base de datos y que contenga la actual implementación de "conectarbd()".

El segundo paso consiste en que cada Form tenga una variable de esa nueva clase y que usen la función de la clase para conectar a la BBDD. Si quieres que la conexión se mantenga cuando accedas desde un Form u otro, tendrías que hacer que la variable SqlConnection esté declarada como estática, así mantendrá su valor en las diferentes instancias de la clase.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 07/03/2014, 09:27
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Llamar a métodos desde otro form

Hola mira, yo tengo un ejemplo similar al tuyo

esta es mi clase conexión

Cita:
'Desarrollado por: ISC Alan Francisco Mex Uc
Imports System.Data.SqlClient
Imports System.Data.OleDb
Public Class Conexion
Public con As New OleDbConnection

'este método es para mostrar los datos en las consultas y para el form de login
Sub conexion()
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="fuente" "
con.Open()
End Sub

End Class

y esta es la clase donde hago la llamada a la clase conexión


Cita:
'Desarrollado por: ISC Alan Francisco Mex Uc
Public Class BuscaClientes
'aqui estoy creando una instancia de la clase conexión
Dim conec As New conexion.Conexion
Dim cliente As String

Private Sub BuscaClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
conec.conexion()
Dim cliente As OleDb.OleDbCommand
Dim dc As OleDb.OleDbDataReader
cbxNombreCliente.Items.Clear()
cliente = New OleDb.OleDbCommand("Select NOMBRE from CLIENTES ", conec.con)
dc = cliente.ExecuteReader()
While dc.Read()
Me.cbxNombreCliente.Items.Add(dc(0))
End While
dc.Close()
conec.con.Close()
End Sub
End Class


Espero te sirva


saludos!!!

Etiquetas: form, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:42.