Sunday, October 22, 2006

LA PROGRAMACION: PUNTOS DE VISTA

La programacion como se conoce hoy, es casi una doctrina, lo que comenzo casi por casualidad y luego considerado un arte, ahora es solo trabajo, ¿Como se llegó a esto...?
La verdad es que no lo sabria explicar, la cuestio es que hacer al programar, y para que se hace, muchos dirán talvez que para solucionar algun problema, o simlemente para salvarse de ser despedidos, pero que es lo que entregamos al lanzar algun software, solo son CODIGOS MUERTOS, o inutiles, exepto para quienes lo ocupan, que hay de nuestro esfuerzo, de las ideas, de la pasion de crear soluciones, donde no las hay...
Existe una belleza en la programacion, pero ¿que puede ser considerado bello en esta area del conocimiento?, codigos pequeños, funcionalidad, no rechazo visual, todo esto, nunguna de estas cosas, que se busca al programar, para que no complicamos entonces...
Programas pequeños, software de alto nivel, paginas web, trabajos para la universidad, programas propios, que es lo que se quiere resolver con tantos codigos, ¿Buscar Dinero?, hacia donde vamos con esta masificacion de codigos, que otra lectura se le dá a la codificacion, ¿es solo eso?...
Cuando entonces nos conectemos a las maquinas podremos pensar en forma codificada, algoritmos por el aire, loops, errores, falta informacion, pensemos en bits, todo es 0 o 1, creo que ya no solo para nosotros los informaticos...

Thursday, August 10, 2006

CREACION BASE DE DATOS CON MS ACCESS


Una vez más la necesidad hace que busque soluciones más simples de lo que no realmente quiere hacer, necesitaba una base de datos transportable, para cada usuario de una gran aplicacion, y como tienen las licencias, creo que esta es la mejor solución, así que decidí crear una base de batos a traves de codigo, para generarla al priemr encuentro con el programa y luego solo llenar con datos.esta vez el tipo de conexion es a travez de OLEDB.

using System;
using ADOX;
namespace CrearBaseDatosAccess
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source = C:\\BaseDatos.mdb;" +
"Jet OLEDB:Engine Type=4");
Console.WriteLine("Base de Datos creada Exitosamente");
cat = null;
Conexion con = new Conexion();
con.CrearTabla();
}
}
}

Ahora agregamos una clase donde se crea una tabla dentro de la basa de datos:


using System;
using System.Data;
using System.Data.OleDb;
namespace CrearBaseDatosAccess
{
public class Conexion
{
string conex = "Provider = Microsoft.Jet.OLEDB.4.0;" +
"Data Source = C:\\BaseDatos.mdb;";
OleDbConnection con;
public void CrearTabla()
{
string crear = "CREATE TABLE datos(Nombre Char(25), Apellido Char(25)," +
"Email Char(25))";
con = new OleDbConnection(conex);
OleDbCommand cmd = new OleDbCommand(crear,con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}

Thursday, August 03, 2006

PASAR DE WORD A PDF CON .NET (I PARTE)


Bueno, despues de tanto buscar, encontré por casualidad una parte de un codigo que me ayudaria a desarrollar lo que estaba buscando hace tiempo, poder pasar un documento MS Word a formato PDF a traves de codigo, sin un peso de pormedio, ¿como ocurrio...?, estaba buscando como poder leer solo una pagina en especifico de un pdf para poder recuperar sus valores, cuando aparecio este enlace, http://rajaamir.blogspot.com/2005/07/creating-word-to-pdf.html , aunque incompleto, estaba gran parte de lo que necesitaba, le faltaba la declaración del documento word, a continuacion pondré un procedimiento que desarrollé en base a lo anterior, la cual recibe el nombre del archivo seleccionado y lo transforma a pdf:
public void WordaDoc(string path)
{
Word.ApplicationClass WordApp = new Word.ApplicationClass();
object nombreDOC = path;
object readOnly = false;
object Visible = true;
object missing = System.Reflection.Missing.Value;
Word.Document doc = WordApp.Documents.Open(ref nombreDOC,
ref missing,ref readOnly, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref Visible);
com.lowagie.text.Document document = new ds.Document(ds.PageSize.A4, 36, 72, 108, 180);
PdfWriter.getInstance(document, new FileStream(doc.Name.Replace(".doc",".pdf"), FileMode.Create));
document.open();
foreach(Word.Paragraph para in doc.Paragraphs)
{
com.lowagie.text.Paragraph paragraph = new ds.Paragraph();
switch(para.Alignment)
{
case WdParagraphAlignment.wdAlignParagraphCenter:
paragraph.setAlignment(ds.ElementConst.ALIGN_CENTER);
break;
case WdParagraphAlignment.wdAlignParagraphJustify:
paragraph.setAlignment(ds.ElementConst.ALIGN_JUSTIFIED);
break;
case WdParagraphAlignment.wdAlignParagraphLeft:
paragraph.setAlignment(ds.ElementConst.ALIGN_LEFT);
break;
case WdParagraphAlignment.wdAlignParagraphRight:
paragraph.setAlignment(ds.ElementConst.ALIGN_RIGHT);
break;
}
paragraph.add(para.Range.Text);
document.add(paragraph);
}
document.close();
}


recuerden que deben usar la DLL iTextdotNet, y los siguientes namespaces:

using System;
using Word;
using System.Drawing.Imaging;
using ds=com.lowagie.text;
using com.lowagie.text.pdf;
using System.IO;


Ademas de agregar (en referencias), vjslib, esta es la primera parte porque falta capturar los formatos originales del archivo word (espacios de lineas, viñetas, etc), trabajaré para ello, SI ES QUE ALGUIEN NO ME AYUDA ANTES EN ESTO.
Saludos y suerte con el codigo.

Wednesday, July 26, 2006

ENCONTRE OTRA PAGINA DE C SHARP PERO...


Navegando y buscando que es un Add-ins o un Shared-in y como crear uno para adjuntarlo a Outlook, me encotré con una pagina muy buena, pero esta en frances, ya estoy con problemas con el ingles y ahora encuentro esta joya en frances, pretenece a una serie de paginas, creo que te inscribes en una y puedes entrar a cualquiera con esa cuenta creada. Alguna de las paginas son las siguientes:
VBFrance.com : http://www.vbfrance.com/
ASPFr.com : http://www.aspfr.com/
CPPFrance.com : http://www.cppfrance.com/
CFMFrance.com : http://www.cfmfrance.com/
PHPCS.com : http://www.phpcs.com/
JavascriptFR.com : http://www.javascriptfr.com/
DelphiFR.com : http://www.delphifr.com/
FlashKoD.com : http://www.flashkod.com/
JavaFR.com : http://www.javafr.com/
GraphFR.com : http://www.graphfr.com/
IrcFR.com : http://www.ircfr.com/
AsmFR.com : http://www.asmfr.com/
CSharpFR.com : http://www.csharpfr.com/
CodeS-SourceS.com : http://www.codes-sources.com/
PDAfr.com : http://www.pdafr.com/
SQLfr.com : http://www.sqlfr.com/
FoxproFR.com : http://www.foxprofr.com/
PythonFrance.com : http://www.pythonfrance.com/
TechnoS-SourceS.com : http://www.technos-sources.com/
Emploi.CodeS-SourceS.com : http://emploi.codes-sources.com/
Las paginas son amigables y poseen codigos para bajar, videos y otras cosas.
Eso es todo por hoy, que las disfruten...

Thursday, July 20, 2006

MARCA DE AGUA EN UN PDF

Trabajando o tratando de hacerlo en realidad, me encontre con una version evolusionada de la dll que habia comentado anteriormente esta vez se trata de iTextdotNET, esta herramienta nos permite programar sobre archivos Pdf con mayor libertad, lo puedes encontrar en la siguiente direccion:
http://www.ujihara.jp/iTextdotNET/en/
La imagen nos muestra las referencias que necesitamos para poder realizar nuestro codigo, Gnu.Classpath.Core y ItextdotNET pertenecen a una serie de Dlls que nos proporciona esta herramienta, mientras que vjslib lo encuentras en los componentes de .NET.
Ahora mostraremos el codigo para poder realizar una marca de agua, es decir una imagen detras del texto de un Pdf, puede servir para marcar tus creaciones en Pdf, dejarlos marcado como "Prohibido su reproduccion", etc. para lo que mas estimes conveniente.
primero los nameSpace considerados:

using System;
using System.Windows.Forms;
using com.lowagie.text; //Pertenecen a los Dll
using com.lowagie.text.pdf; //Pertenecen a los Dll
using System.IO;


Debes tener ademas una imagen creada, en este caso se llama watermark.jpg, la cual es utilizada para realizar la marca, esta clase hace referencia a una entrada que es el nombre del Pdf al cual se le aplicará la marca, creando uno nuevo para que quede el original y la copia con la marca.

public class Class1
{
public void MarcaPDF(string path)
{
PdfReader reader = new PdfReader(path);
int n = reader.getNumberOfPages();
Rectangle psize = reader.getPageSize(1);
float width = psize.width();
float height = psize.height();
Document document = new Document(psize, 50, 50, 50, 50);
PdfWriter writer = PdfWriter.getInstance(document, new FileStream(@"c:\Documento.pdf", FileMode.Create));
try
{
Watermark watermark = new Watermark(Image.getInstance(@"c:\watermark.jpg"), 300, 100);
document.add(watermark);
}
catch(Exception e)
{
MessageBox.Show("Are you sure you have the file 'watermark.jpg' in the right path?");
}
document.open();
PdfContentByte cb = writer.getDirectContent();
int i = 0;
int p = 0;
while (i < n)
{
document.newPage();
p++;
i++;
PdfImportedPage page1 = writer.getImportedPage(reader, i);
cb.addTemplate(page1, .5f, 0);
}
document.close();
}

}

Tuesday, July 18, 2006

BORRAR ARCHIVO CON UN SIMPLE COMANDO


Nunca pensé que algun dia iba a querer borrar un archivo, pero la necesidad es mas fuerte, es mucho mas simple de lo que creia, ¿Y para que borrar un archivo?, por que no crearlo, modificarlo, clonarlo, es mera necesidad, creo unos archivo ZIP y me quedaba afuera lo que deseaba enviar...
Bueno al grano, el codigo es el siguiente:

File.Delete(nombre_del archivo);
Puede ir la direccion o el nombre del archivo, dependerá del area de trabajo en que se desarrolla la aplicacion.
Eso es todo...

Friday, July 07, 2006

VER VALORES COMBOBOX...

En el trabajo que estoy realizando, necesitaba buscar elementos que esten dentro del comboBox, es por este motivo que nacio la necesidad de buscar una solucion, y la solución es mas simple de lo que esperaba. Primero colocamos desde el cuadro de herramientas el comboBox, luego algunos label para poder visualizar lo que estaba buscando.
El codigo va sobre el mismo comboBox, y es el siguiente:

private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
label1.Text = comboBox1.SelectedItem.ToString();
label2.Text = comboBox1.SelectedIndex.ToString();
}
Sin mas que agregar por hoy.....
espero les sirva....

LLENAR COMBOBOX DESDE BASE DE DATOS


Veremos ahora como llenar de valores un comboBox, el cual posee varias propiedades, esta ves solo usaremos "Items" y "Add", de este forma seleccionamos la posicion en donde irá el valor y luego se agraga.
Recuerda que la conexion ya existe así que solo se mostrará la parte en donde tiene relacion esta función.
La ayuda de Visual Studio .Net dice sobre este control lo siguiente:
"El control ComboBox de los formularios Windows Forms se utiliza para mostrar datos en un cuadro combinado desplegable. De forma predeterminada, el control ComboBox aparece en dos partes: la parte superior es un cuadro de texto que permite al usuario escribir un elemento de la lista. La segunda parte es un cuadro de lista que muestra una lista de elementos, de los cuales el usuario puede seleccionar uno."
El codigo es el siguiente:
comboBox1.Items.Clear();
string valorItem;
for(int i = 0; i<= (ds.Tables["Nombre_de_la_Tabla"].Rows.Count-1);i++)
{
valorItem = dv[i]["Nombre_del_Campo"].ToString();
comboBox1.Items.Add(valorItem);
}
De esta forma se llenan los campos de un comboBox1, esta vez eso es todo...