19/2/09

Manejo VirtualBox

Utilidades para arrancar la máquina sin hacerlo interactivamente.


Arrancar máquina virtual desde línea de comandos:
VBoxManage startvm "NombreMaquina"

Pausar una máquina desde línea de comandos:
VBoxManage controlvm "NombreMaquina" savestate

Copiar una máquina virtual (copia el disco duro. La máquina virtual hay que crearla y asignarle el nuevo disco duro creado):
VBoxManage clonevdi Fuente.vdi Destino.vdi

12/2/09

ASP.NET: Paso de Rows a Textboxes y viceversa

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();
}
}


Hay que pasarles el textbox la Row y el nombre de la columna es una variable en la tabla (gracias a que la genera como pública).

30/9/08

Añadir valor nulo en un comboBox asp.net (dropdownlist)

Hay que asignar a true la propiedad AppendDataBoundsItems.


this.comboLocalidad.AppendDataBoundsItems = true;
this.comboLocalidad.Items.Add(new ListItem("Sin asignar", "0"));

El valor 0 tendrá que ser tratado al grabar como nulo.

19/9/08

Curioso juego de programación

http://www.gameroo.nl/games/light-bot

palabras clave:
juego programación interesante aprendizaje chorrada

16/9/08

Para modificar o eliminar un registro de un GridView de asp. net.

Palabras clave:
GridView, Posición, Posicionar, modificar, eliminar, RowCommand, DataKeys, Grid, Rejilla.

// e.CommandArgument.ToString(). Nos devuelve una cadena con la posición en el grid en la que se ha pulsado el botón.
// Para obtener la clave primaria de la fila pulsada hemos de definir en el GridView en su propiedad “DataKeyNames” los nombres de los campos que forman la clave primaria a mano antes de empezar.
DataKey dk = this.GridView1.DataKeys[Int32.Parse(e.CommandArgument.ToString())];
// El dk obtiene la lista de valores para acceder al segundo se pone el [1]
this.Title = dk.Values[1].ToString();

Una vez obtenida la clave primaria ya se puede obtener el objeto a modificar.

14/7/08

Tamaño de la barra de windows

La barra mide 22 puntos.
si a 768 ( de 1024 x 768) le restamos 22 tenemos que para aplicaciones podemos tener:

746 puntos de alto.

19/6/08

Creación de tabla en oracle


CREATE table "S" (
"A" NUMBER(5,5) NOT NULL,
"C" VARCHAR2(4000),
constraint "S_PK" primary key ("A")
)
/

CREATE sequence "S_SEQ"
/

CREATE trigger "BI_S"
before insert on "S"
for each row
begin
select "S_SEQ".nextval into :NEW.A from dual;
end;
/

ALTER TABLE "S" ADD CONSTRAINT "S_FK"
FOREIGN KEY ("C")
REFERENCES "TABLA1" ("ID")

/

23/4/08

Netbeans jsf oracle + Primera inserción que funciona

Necesita un messageGroup1

int id = 31;
String nomb = "Treinta y uno";
Connection con = null;
try {
InitialContext ic = new InitialContext();
//en esta parte es donde ponemos el Nombre
//de JNDI para que traiga el datasource
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/HR_Oracle");
con = ds.getConnection();
Statement st = con.createStatement();
try{
String com = "insert into TABLA1(id,nomb) values ("
+ Integer.toString(id)
+ ",'"
+ nomb
+ "')";
info(com);
int executeUpdate = st.executeUpdate(com);
info(Integer.toString(executeUpdate));
}catch(SQLException ex){
error(ex.getMessage());
}
//el resultSet es el encargado de traer los datos de la consulta
ResultSet rs = st.executeQuery("select * from TABLA1");
while (rs.next()) {
info(" " + rs.getString(1) + " " + rs.getString(2));
}
} catch (SQLException ex) {
error(ex.getMessage());
} catch (Exception exx) {
error(exx.getMessage());
}

4/3/08

Fila actual de un BindingSource

Actualización: Parece que esto funcionaría y compacta el código.

return (this.BaseDeDatosBS.Current as DataRowView).Row as DS.BaseDeDatosRow;
// Si no hay Current devolvería un null.


Sirve para acceder al elemento actual de un binding source con el tipo de fila adecuado.

public DS.JuzgadoRow JuzgadoActual {
get {
DS.JuzgadoRow result = null;
if (this.JuzgadoBs.Current != null) {
DataRowView drw = this.JuzgadoBs.Current as DataRowView;
result = drw.Row as DS.JuzgadoRow;
}
return result;
}
}

28/11/07

Text de solo números

Debería ser con change. De hecho falla si le pegamos letras pero es lo que hay.
Se permiten números y carateres de control (si no se permiten los caracteres de control el borrar falla)


private void textAno_KeyPress(object sender, KeyPressEventArgs e) {
e.Handled = !(Char.IsNumber(e.KeyChar) || Char.IsControl(e.KeyChar));
}


21/11/07

Campo calculado en un DataTable de un DataSet .net

Program.dm.ds.Proc.Columns.Add("TipoProcNomb", typeof(string), "Parent(FK_TipoProc_Proc).nomb");

(habría que explicarlo más)

17/10/07

Databinding ComboBox C#


ComboBox.DataSource = Program.dm.TipoProcBindingSource; //BindingSource a mostrar
ComboBox.DisplayMember = "nomb"; // Campo nombre
ComboBox.ValueMember = "id"; // Campo valor
ComboBox.DataBindings.Add( // enlace con el campo donde se guarda el valor
new Binding("SelectedValue", // La propiedad de SelectedValue ( no value)
Program.dm.procBindingSource, // Bindingsource de la tabla en la que grabamos el valor
"idTipoProc" // nombre del campo en el que guardamos el valor
));

4/10/07

Comprobar permisos al ejecutar aplicación .net

Sacado de campusMVP

private static bool CheckFullTrust()
{
try
{
// Demandar Full Trust
new PermissionSet(PermissionState.Unrestricted).Demand();
return true;
}
catch (SecurityException)
{
try
{
// No estamos en Full Trust, se lo contamos al usuario
MessageBox.Show("La aplicación necesita Full Trust");
}
catch (SecurityException)
{
// La aplicación no tiene permisos mostrar mensajes... :(
//Logeamos lo ocurrido
}
}
return false;
}

27/7/07

Generar avisos de compilación en C#

Sirve para poner Wanings al darle a compilar por ejemplo para indicar cosas que quedan por hacer o pruebas en código.


private void grabacionCrear() {
#warning grabacionCrear sin hacer
}

19/7/07

Hacer un DataGridView de solo lectura.


ReadOnly = true;
AllowUserToAddRows = false;
AllowUserToDeleteRows = false;
SelectionMode = DataGridViewSelectionMode.FullRowSelect;

5/7/07

Textbox con solo números

(Copiado de www.buayacorp.com)
public Form1()
{
InitializeComponent();

textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
}
void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Permitir sólo las teclas de control o números
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
}