miércoles, 21 de octubre de 2009

ERROR [07002] [Microsoft][Controlador ODBC Microsoft Access] (resuelto)

El problema.

OdbcCommand cmd = MyConx.CreateCommand();
cmd.CommandText = "INSERT INTO miTabla (campo1, campo2, campo3) VALUES(@campo1, @campo2, @campo3)";
cmd.Parameters.AddWithValue("@campo1", "valor campo 1");
cmd.Parameters.AddWithValue("@campo2", 2);
cmd.Parameters.AddWithValue("@campo3", DateTime.Now);
cmd.ExecuteNonQuery();

El error.
ERROR [07002] [Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 3.

Mi respuesta.
Que pasa? Ya agregue los tres parámetros! Porque .net no me quiere?


La Solucion.


OdbcCommand cmd = MyConx.CreateCommand();
cmd.CommandText = "INSERT INTO miTabla (campo1, campo2, campo3) VALUES(?, ?, ?)";
cmd.Parameters.AddWithValue("@campo1", "valor campo 1");
cmd.Parameters.AddWithValue("@campo2", 2);
cmd.Parameters.AddWithValue("@campo3", DateTime.Now);
cmd.ExecuteNonQuery();

la razón.
Access no soporta los parámetros nombrados con @


Los dejo con este post un poco corto pero conciso.
Saludes queridos lectores!

Technorati Tags: ,,

martes, 6 de octubre de 2009

Documental sobre visual Studio

Siempre es bueno saber algo de cultura general, por eso en esta ocasión les traigo un documental que consta de 2 capítulos donde hablan sobre la evolución de Visual Studio y el prometedor futuro de esta herramienta amada por todos los desarrolladores que trabajamos con plataformas Microsoft.

The Visual Studio Documentary: Part One Get Microsoft Silverlight

The Visual Studio Documentary: Part Two Get Microsoft Silverlight

mas info en http://channel9.msdn.com/shows/VisualStudioDocumentary

martes, 12 de mayo de 2009

Yo También Soporto El Konami Code

Leyendo PixFans me encuentro con una lista de las webs que soportan el Código Konami  (↑ ↑ ↓ ↓ ← → ← → B A) el mismo que se usa para desbloquear el arbitro perro en Super star Soccer para SNes. =D

Y con esto nace una pregunta.

P: ¿Como Puedo usar el Código Konami en Mi Web?

R: Agrega estas líneas a tu sitio.

<script src="http://konami-js.googlecode.com/svn/trunk/konami.js" type="text/javascript"></script>

<script type="text/javascript">
konami.load("http://es.wikipedia.org/wiki/Konami_Code")
</script>

Y listo estamos “Konami Code Ready” (↑ ↑ ↓ ↓ ← → ← → B A) Y [Enter]

konami_Code_Ready _hi

Unos sitios de interés:

Etiquetas de Technorati:

miércoles, 15 de abril de 2009

Algoritmos para detección de movimiento

Desde que era un “bebé desarrollador”, imaginaba lo complicado que podría ser un algoritmo de detección de movimiento, o algún modulo de inteligencia artificial. Pero luego de aprender mucho y rodar por la Internet me he sabido encontrar con que no es tan complicado “cuando te interesa y quieres aprender”, y ya que en estos meses me embarco en un proyecto personal, con el cual podemos interactuar con cámaras y otro tipo de sensores sencillo.
Tomé el tiempo de buscar la documentación y me he encontrado con esta maravilla.

AForge.NET framework: Contiene una serie de librerías que nos pueden ayudar en nuestros desarrollos basados en Inteligencia Artificial, Detección De Movimiento, Procesamiento de imagen, redes neuronales, robótica; además de contener ejemplos, Fuentes y una muy buena documentación, está distribuido bajo una licencia GNU.

(Qué más se le puede pedir a la vida?)

Unos sitios de interés:

 

Etiquetas de Technorati: ,

jueves, 5 de marzo de 2009

Haciendo un PrintScreen con c# en 4 líneas

Ya que en los últimos días no he podido conciliar el sueño me he dedicado a hacer cositas que pienso algún día serán útiles o simplemente son inútiles pero divertidas. y entre esas cosas se me ocurrió hacer pantallazos de lo que “alguien” está haciendo.  ¡Solo por curiosidad del gato!

Y he aquí las 4 líneas mágicas.

string filename = "C:\\imagen.png";

Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);

Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot);

gfxScreenshot.CopyFromScreen( Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

bmpScreenshot.Save(filename, ImageFormat.Png);

Los namespace a importar son:

using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;

Y Sin usar P/Invoke. =D

Etiquetas de Technorati:

viernes, 27 de febrero de 2009

Buscando Texto En Toda Una Base De Datos

Hay ocasiones en las que uno olvida cosas, como un día de aniversario, la clave de tu correo, con cuanto dinero dispones en tu cuenta bancaria, las llaves de la oficina y donde dejaste el control remoto. y piensas. “todo seria tan fácil si pudiera hacer una pregunta como”

SELECT ubicacion, * FROM MisCosas WHERE Nombre like ‘%control%’

Y te diera una lista de donde están todos tus controles, pero lastimosamente no es así. “aunque quizás algún día Google lo consiga”

Pero si lo que necesitas es encontrar un registro y no recuerdas el nombre de la tabla ni la base de datos, para estos casos me tope con un muy útil y sencillo script con el cual generamos un Procedimiento almacenado con el cual podemos buscar cualquier cosa dentro una base de datos, y todo será tan fácil como:

exec dbo.proc_search_for_text 'Nathan'

O si sabes el nombre de la base de datos

exec dbo.proc_search_for_text 'Everett', 'AdventureWorks'

Y obtendrás lo que buscas.

creo que es lógico decir que este tipo de procedimientos almacenados no es bueno usarlos en producción ni en ambientes volátiles.

El procedimiento lo pueden encontrar aquí! http://www.sqlservercentral.com/scripts/Miscellaneous/62066/

martes, 11 de noviembre de 2008

Mi Humilde Opinión Sobre C# 4.0

En las ultimas semanas eh visto como muchos desarrolladores andan muy emocionados con las nuevas características del lenguaje tan amado “C#”, y no voy a decir que no me emocionan… pero mas que emocionarme me asusta que están haciendo con C#, Ya voy a explicar porque.

Tipos dinámicos

Se agrego una palabra clave: “dynamic” con la cual podemos crear objetos dinámicos en tiempo de ejecución. Un ejemplo seria.

dynamic d = GetDynamicObject(…);
d.M(7);

al marcar de esta manera al objeto “d” estamos diciéndole al compilador que no verifique si “d” tiene un método llamado “M” que recibe un entero.

Eh Aquí Mi preocupación: -P: ¿entonces que pasa cuando “d” no tiene el método “M”?   -R: ¡Obtenemos una Exception en tiempo de ejecución!,

Recuerdo que en lanzamiento de C# 2.0, hacían enfoque en los problemas con el casting en las Colecciones y nos trajeron los maravillosos Tipos Genéricos y con ellos muchas soluciones a errores en tiempo de ejecución, ¿y porque ahora recurrimos a tipos dinámicos que nos generan de nuevo problemas en tiempo de ejecución?.

Parámetros Opcionales

Esta nueva característica del lenguaje nos permite definir parámetros opcionales para los métodos. Un Ejemplo Seria.

int Suma(int x = 0, int y = 0, int z = 0)
{  
            return x + y + z;
}

con lo que podíamos llamar al método de estas siguientes formas.

int a = Suma();        // a = 0
int b = Suma(2);       // b = 2
int c = Suma(2, 3);    // c = 5
int d = Suma(2, 3, 4); // d = 9

Mi preocupación sobre este Punto se basa en la manera de como se trabaja actualmente con el polimorfismo y la sobre carga de métodos, se entiende que con esta nueva forma de hacer polimorfismo escribimos menos código, pero ¿hay necesidad de cambiar nuestros paradigmas de codificación?, ¿como afecta esto a nuestras arquitecturas?, son cosas que tendremos que esperar, además que me recuerda al feo VB 6.0.

Parámetros Nombrados

Esta nueva característica del lenguaje nos permite pasar los nombres de los parámetros con sus valores respectivos, Un Ejemplo Seria.

int Suma(int x = 0, int y = 0, int z = 0)
{  
    return x + y + z;
}

Con lo que podríamos hacer algo como esto.

int e = Suma(x:5, z:7);  // e = 12

Esta nueva característica es muy agradable aunque no dejo de pensar en esos desarrolladores que no piensan en la legibilidad del código.

Mi Humilde Opinión

Es Bueno que un lenguaje evolucioné y que valla al ritmo del mercado y al parecer el mercado va por el lado de los lenguajes dinámicos, ya que se podría decir que varias de estas características nuevas vienen de lenguajes como PHP, Python, Delphi y hasta del mismo VB.net, no soy quien para aportar en el equipo de desarrollo de C# pero si puedo dejar mi humilde opinión!

Algunos Links De Interés