using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Sql; using System.Data.SqlClient; namespace ServerExplorer { public partial class frmProcedimientos : Form { private string cnxString; private SqlConnection cnx; public frmProcedimientos(string cnxString) { InitializeComponent(); this.cnxString = cnxString; } private void frmProcedimientos_Load(object sender, EventArgs e) { DataTable dt; SqlDataAdapter da; // Establecer conexion cnx = new SqlConnection(cnxString); // Obtener un datatable con todos los procedimientos de la base de datos. da = new SqlDataAdapter( "SELECT id,name,crdate,type FROM sysobjects "+ "WHERE (UPPER(type) = 'P' OR UPPER(type) = 'TF' OR UPPER(type) = 'TR' OR UPPER(type) = 'V') AND category = 0 " + "ORDER BY name ", cnx); dt = new DataTable(); cnx.Open(); da.Fill(dt); cnx.Close(); // Mostrar todos los procedimientos lsvProcs.Items.Clear(); foreach (DataRow dr in dt.Rows) { ListViewItem item = lsvProcs.Items.Add((String)dr["name"]); item.SubItems.Add(((DateTime)dr["crdate"]).ToShortDateString()); string type = ((string)dr["type"]).ToUpper().Trim(); if (type == "P") { item.SubItems.Add("Proc"); } else if (type == "TF") { item.SubItems.Add("Func"); } else if (type == "TR") { item.SubItems.Add("Trigg"); } else if (type == "V") { item.SubItems.Add("View"); } else { item.SubItems.Add("Unk: \"" + (string)dr["type"] + "\""); } item.Tag = dr["id"]; } } private void lsvProcs_SelectedIndexChanged(object sender, EventArgs e) { if (lsvProcs.SelectedItems.Count>0 ) { DataTable dt; SqlDataAdapter da; int id=(int)lsvProcs.SelectedItems[0].Tag; // Obtener un datatable con el contenido del procedimiento. da = new SqlDataAdapter( "SELECT text FROM syscomments WHERE id = @id ORDER BY colid", cnx); da.SelectCommand.Parameters.AddWithValue("@id", id); dt = new DataTable(); cnx.Open(); da.Fill(dt); cnx.Close(); // Mostrar el contenido del procedimiento txtProc.Text = String.Empty; foreach (DataRow dr in dt.Rows) { txtProc.Text += ((string)dr[0]).Replace("\r","").Replace("\n","\r\n"); } } } private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e) { } private void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e) { } } }