[TestFixture]
Para cada método: que sea una prueba
[Test]
[TestFixture]
[Test]
svn co svn://desarrollo.dxx.xudicial.xunta.es/repositorio/csharp/InventarioDHCP_1.10 svn co svn://desarrollo.dxx.xudicial.xunta.es/repositorio/csharp/Util cd InventarioDHCP_1.10 c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild /p:Configuration=ReleaseBaja el código a donde se encuentre el fichero .bat y lo compila.
// Código para enviar las pulsaciones de teclas
Microsoft.VisualBasic.Interaction.AppActivate(f.Text);//Activa la aplicación. f es el formulario creado anteriormente para pruebas
f.Focus();// Hace falta también esto por lo visto.
Util.EnviarTeclas(5000, "{TAB}");//Cuadro de diálogo. Pasar a "no"
Util.EnviarTeclas(6000, "{ENTER}");//Cuadro de diálogo. ENTER.
// Código en Utils
public static void EnviarTeclas(int TiempoEspera, string teclas) {
Thread t = new Thread(new ParameterizedThreadStart(AEjecutarPorEnvioTeclas));
EnvioTeclas et = new EnvioTeclas(TiempoEspera,teclas);
t.Start(et);
}
public static void AEjecutarPorEnvioTeclas(Object EnvTecl) {
EnvioTeclas aux = EnvTecl as EnvioTeclas;
Thread.Sleep(aux.espera);
SendKeys.SendWait(aux.teclas);
}
public class EnvioTeclas {
public int espera;
public string teclas;
public EnvioTeclas(int espera, string teclas) {
this.espera = espera;
this.teclas = teclas;
}
}
private static DS.AGPROVRow _ProvRow;
public static DS.AGPROVRow ProvRow {
get {
if (_ProvRow == null) {
DS.AGPROVDataTable aux = new DS.AGPROVDataTable();
_ProvRow = aux.NewAGPROVRow();
_ProvRow.ID = 99;
_ProvRow.NOMB = "Prueba Grabar 1";
}
return _ProvRow;
}
}
public static bool ContenidoRowsEsIgual<T>(T row1, T row2) where T : DataRow {
bool result = true;
if (!row1.GetType().Equals(row2.GetType())) {
throw new Exception("Las filas no son del mismo tipo");
}
DataRow r1 = row1 as DataRow;
DataRow r2 = row2 as DataRow;
for (int i = 0; i < r1.ItemArray.Length; i++) {
if (!r1[i].Equals(r2[i])) {
result = false;
}
}
return result;
}
to_char(campo_fecha,'DD/MM/YYYY HH24:MI:SS')
select to_char(sysdate,'DD/MM/YYYY HH24:MI:SS') from dual;
using System;
using System.Collections;
using System.Security.Principal;
using System.Reflection;
using System.IO;
public
class Prueba
{
public static void Main()
{
StreamWriter sw = File.CreateText("roles.txt");
foreach (IdentityReference Role in WindowsIdentity.GetCurrent().Groups.Translate(typeof(NTAccount)))
{
Console.WriteLine(Role.Value);
sw.WriteLine(Role.Value);
}
Console.ReadLine();
sw.Close();
}
}
public class AdapterModificado : DSTableAdapters.EnteTableAdapter
{
public void FillByNif(DS.EnteDataTable t,string nif)
{
SqlCeCommand aux = this.CommandCollection[0];
this.CommandCollection[0] = new SqlCeCommand("select * from ente where nif = @nif");
this.CommandCollection[0].Connection = this.Connection;
this.CommandCollection[0].Parameters.Add("@nif", nif);
this.Fill(t);
this.CommandCollection[0] = aux;
}
}
wsdl.exe
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
wsdl [URL servicio]
wsdl http://localhost/Service1.asmx
serv = new Service1();
serv.Url = @"http://localhost/Service1.asmx";
serv.CookieContainer = new System.Net.CookieContainer();
serv.MetodoWeb("Dato para método",5); // El fichero generado tiene los métodos web como métodos normales del objeto
sqlcmd
C:\Program Files\Microsoft SQL Server\100\Tools\Binn
sqlcmd -S [nombre instancia servidor] -d [nombre bd] -i [fichero a ejecutar]
sqlcmd -S localhost\SQLExpress -d PruebaBD1 -i creacion_tablas.sql
SELECT name FROM SYSOBJECTS WHERE XTYPE='U';
SELECT * FROM SYSOBJECTS WHERE XTYPE='F';
SELECT * FROM SYSOBJECTS WHERE XTYPE='PK';
Select name from syscolumns where id=object_id('tabla');
csc /t:library /out:tiendalib.dll TiendaLib\TiendaLibBD.cs Tiendalib\
directorions\directorio.cs /lib:Utils\bin\Debug /reference:utils.dll
select CC.TABLE_NAME TablaQueReferencia,CC.COLUMN_NAME CampoDeEnlace,CC.POSITION PosicionDelCampo,C.CONSTRAINT_NAME NombreDelConstraint from all_constraints c
left join all_cons_columns cc
on c.constraint_name like cc.constraint_name
where c.constraint_type like 'R' -- Referencia
AND R_CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME FROM ALL_CONSTRAINTS WHERE
CONSTRAINT_TYPE LIKE 'P' -- Clave primaria
AND TABLE_NAME LIKE 'SERVIDORDAT')-- Nombre de la tabla a buscar sus dependientes
AND C.OWNER LIKE 'DESAR' AND CC.OWNER = 'DESAR'-- Nombre del esquema si hay varios
order by 1,2,3;
Binding BindingFIni;
private void InicializarComponentes() {
BindingFIni = new Binding("Value", Program.dm.OrganoBindingSource, Program.dm.dsOracle.ORGANO.FINIColumn.ColumnName);
BindingFIni.Format += new ConvertEventHandler(BindingFIni_Format);
BindingFIni.Parse += new ConvertEventHandler(BindingFIni_Parse);
this.dtpFIni.DataBindings.Add(BindingFIni);
this.dtpFIni.Value = DateTime.Today;// Sin estas 2 líneas no funciona, lo que no se es porqué.
BindingFIni.WriteValue();// Línea necearia
// Ojo: Tambien es neceario incluir líneas en el FormClosing
}
void BindingFIni_Parse(object sender, ConvertEventArgs e) {//Se llama al grabar
DateTimePicker dtp = ((Binding)sender).Control as DateTimePicker;
if (dtp != null && !dtp.Checked) {
e.Value = DBNull.Value;
}
}
void BindingFIni_Format(object sender, ConvertEventArgs e) {// Se llama al leer
if (e.Value is System.DBNull) {
DateTimePicker dtp = ((Binding)sender).Control as DateTimePicker;
e.Value = DateTime.Today;
dtp.Checked = false;
}
}
private void FE_FormClosing(object sender, FormClosingEventArgs e) {
//Aquí las comprovaciones necesarias
if (!e.Cancel) {
// Si no se hace esto sigue ejecutando el format aunque este formulario esté cerrado.
this.dtpFIni.DataBindings.Remove(this.BindingFIni);
}
}
r.HasVersion(DataRowVersion.Proposed))
internal static void RolCrear() {
dm.rolBindingSource.AddNew();
dm.RolActual.CODIGO = -1;
(new Rol.FE()).ShowDialog();
}
internal static void RolModificar() {
(new Rol.FE()).ShowDialog();
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace InventarioDHCP.Rol {
public partial class FE : Form {
public FE() {
InitializeComponent();
InicializarComponentes();
}
private void InicializarComponentes() {
this.tbNombre.DataBindings.Add("Text", Program.dm.rolBindingSource, Program.dm.dsOracle.ESPECIALIDAD.NOMBREColumn.ColumnName);
}
private void btnSalir_Click(object sender, EventArgs e) {
this.Close();
}
private void btnGrabar_Click(object sender, EventArgs e) {
this.GrabarYSalir();
}
private void GrabarYSalir() {
if (this.Grabar()) {
this.Close();
}
}
private bool Grabar() {// Devuelve true si fue capaz de grabar
bool result = false;
if (this.EsValido()) {
Program.dm.rolBindingSource.EndEdit();
Program.dm.RolGrabar(Program.dm.RolActual, null);
result = true;
}
return result;
}
private bool EsValido() {
bool result = true;
this.errorProvider1.Clear();
if (this.tbNombre.Text.Equals("")) {
result = false;
this.errorProvider1.SetError(this.tbNombre, "Se ha de indicar un nombre");
}
return result;
}
private void FE_FormClosing(object sender, FormClosingEventArgs e) {
DSOracle.ROLRow r = Program.dm.RolActual;
if (r.HasVersion(DataRowVersion.Proposed)) {// Si no ha cambiado no hacer nada
DialogResult dr = MessageBox.Show("¿Desea grabar los cambios?", "Atención:",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
switch (dr) {
case DialogResult.Yes: {
if (!this.Grabar()) {//Si no es capaz de grabar que no salga del formulario
e.Cancel = true;
}
break;
}
case DialogResult.No: {// Si no quiere grabar, cancelar la edición
Program.dm.rolBindingSource.CancelEdit();
break;
}
case DialogResult.Cancel: {// Si cancela no hacer nada pero tampoco salir del formulario
e.Cancel = true;
break;
}
default: {
throw new Exception("Respuesta no contemplada");
}
}
}
}
}
}
public void RolGrabar(DSOracle.ROLRow r, OracleTransaction Trans) {
// Atención si se nos produce un error de compilación en las lineas siguientes hay que ir a la definición de Adapter y cambiarlo por public.
// Esto pasará cada vez que cambiemos algo en DSOracle.
this.rolTableAdapter.Adapter.InsertCommand.Transaction
= this.rolTableAdapter.Adapter.UpdateCommand.Transaction
= this.rolTableAdapter.Adapter.DeleteCommand.Transaction
= Trans;
if (r.RowState == DataRowState.Added) {
r.CODIGO = Util.OracleGetSequence(conOracle, "Rol_SEQ", Trans);
}
rolTableAdapter.Update(r);
}
if (!IsPostBack) {
PrepararGrid();
}
private void PrepararGrid() {
this.GridView1.DataKeyNames = { "Codigo" };//lista de campos que forman la clave primaria
this.SqlDataSource.SelectCommand = “Select Codigo, nombre from tabla”;// Consulta para rellenar el grid
//Añadir las columnas y botones
UtilWeb.AnadirColumnaText(this.GridView1, "nombre", "NOMBRE");
UtilWeb.AnadirColumnaBoton(this.GridView1, “AnadirAGenerarDat”, "Generar Fichero Dat");
UtilWeb.AnadirColumnaBoton(this.GridView1, “VerEquiposServidor”, "Ver Equipos");
}
public static void AnadirColumnaBoton(GridView gv, string Comando, string TextoBoton) {
ButtonField btnf;
btnf = new ButtonField();
btnf.ButtonType = ButtonType.Button;
btnf.CommandName = Comando;
btnf.HeaderText = "";
btnf.Text = TextoBoton;
gv.Columns.Add(btnf);
}
public static void AnadirColumnaText(GridView gv, string Campo, string Cabecera, bool visible) {
BoundField bf;
bf = new BoundField();
bf.DataField = Campo;
bf.HeaderText = Cabecera;
bf.ReadOnly = true;
bf.Visible = visible;
gv.Columns.Add(bf);
}
public static void AnadirColumnaText(GridView gv, string Campo, string Cabecera) {
AnadirColumnaText(gv, Campo, Cabecera, true);
}
Utilidades para arrancar la máquina sin hacerlo interactivamente.
VBoxManage startvm "NombreMaquina"
VBoxManage controlvm "NombreMaquina" savestate
VBoxManage clonevdi Fuente.vdi Destino.vdi
En Web no hay databinding salvo en grids. Hacen falta estas cosas para pasar los datos de la fila al formulario de de vuelta a la tabla en los formularios de edición
public static void SetTextOrNull(TextBox textBox, DataRow r, DataColumn dataColumn) {
if (textBox.Text.Equals("")) {
r[dataColumn] = System.Convert.DBNull;
} else {
r[dataColumn] = textBox.Text;
}
}
public static void GetTextOrNull(TextBox tb, DataRow r, DataColumn dataColumn) {
if (r[dataColumn].Equals(System.Convert.DBNull)) {
tb.Text = "";
} else {
tb.Text = r[dataColumn].ToString();
}
}