Files
VAR.DatabaseExplorer/ServerExplorer/frmProcedimientos.cs
2013-10-14 01:03:45 +02:00

119 lines
3.4 KiB
C#

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)
{
}
}
}