|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - chenech
1
« en: Miércoles 16 de Mayo de 2018, 17:53 »
OpenDialog->FileName te devuelve el nombre del archivo, por eso al insertar eso te graba el nombre, debes crear un campo blob en la base de datos y y cargar el archivo a un Stream, luego este asignarlo al parámetro, de esta formap puedes guardar un jpg, doc, binarios, texto, etc, algo así:
QInsertar->SQL->Clear(); Insert = "INSERT INTO registros (descripcion) VALUES (:pdescripcion)"; TFileStream *fStream = new TFileStream(OpenDialog->FileName, fmOpenRead); QInsertar>ParamByName("DOCUMENTO")->AsStream = fStream; delete fStream; QInsertar->Parameters->ParamByName("pdescripcion")->Value = Direccion;
2
« en: Miércoles 3 de Enero de 2018, 19:37 »
Buenas, de pago hay bastantes, por ejemplo ImageKit, TAcquireImage, VintaSoftTwain y creo que TMS y alguno mas también, igual buscando por la web consigues alguno con crack si no, lo mas fácil es con librerias dll, yo desarrollé uno hace muchos años con las librerias de TWAIN a pelo pero fue complicado, llamadas a una dll y con la versión 1 de C++ Builder, imagina los años que hace, no creo que sirva para seatle ya. Echa un vistazo a estas páginas http://www.dreamincode.net/forums/topic/193327-scanner-application-with-eztwain-library/https://sourceforge.net/projects/twain-samples/files/TWAIN%202%20Sample%20Data%20Source/TWAIN%20DS%202.1.3/Ahí explica como usar las librerías TWAIN con bastante detalle y con ejemplos en C++. Un saludo.
3
« en: Jueves 23 de Noviembre de 2017, 14:50 »
Prueba a poner un ShowMessage despues de asignar a ABSDatabase1->DatabaseFileName a ver que tienes ahí.
Un saludo.
4
« en: Jueves 28 de Septiembre de 2017, 15:25 »
Hola Javier, con printf puedes:
printf("Caracter a mostrar %c \n", c1[0]);
Un saludo.
5
« en: Lunes 18 de Septiembre de 2017, 19:05 »
Hola, creo que en la definición del array a[n] no puedes poner n ya que no tiene ningún valor, tendrías que poner por ejemplo 10 y luego no permitir que se introduzca un valor máximo de 10 para evitar la violación. O bien definir a[n] después de aceptar n para poder darle un valor
6
« en: Jueves 13 de Julio de 2017, 20:23 »
Buenas tardes, he compilado el código que has puesto sin variar ni una coma y me da los resultados bien. Me lleva a pensar en el compilador o redondeo o algo así. Yo uso Borland C++ 5 y ya te digo, da perfecto, no es el programa ni código, sino configuración, compilador, etc.
Un saludo.
Edito: Pues era redondeo :-)
7
« en: Martes 11 de Julio de 2017, 18:19 »
No tienes que pasar variables ni llamarlo, el evento se ejecuta automáticamente cada vez que se redibuja el grid (Ondraw), simplemente le das doble clic en el evento ese y añades el código de juanC2.
8
« en: Lunes 10 de Julio de 2017, 13:39 »
No hay que pasar nada a la función, ve a propiedades del grid, busca el evento drawdatacell y copia el código que ha puesto juanC2, pero copia solo el código de la función, lo que está dentro de las { } y si el grid no se llama Grid1, pues lo cambias por el nombre que le hayas puesto.
Un saludo.
10
« en: Sábado 3 de Junio de 2017, 21:34 »
Hola, he copiado el código tal como lo tienes y no me da error, solo un warning de posible perdida de datos y el retorno ret, pero error ninguno.
11
« en: Viernes 5 de Mayo de 2017, 17:31 »
Hola, te dejo un ejemplo de hacerlo de una forma y de otra, quitando al final el primer ejemplo y quitando al principio el otro, prueba a ver por que no he tenido tiempo de probarlo, si puedes usar String hay funciones como SubString que te facilitan la labor, con char me sale así mas o menos, un saludo.
// Ejemplo quitando al final
const char Nombre[30] = "Nombre"; char Salida[30]; for(int i=0;i<strlen(Nombre);i++) { for(int j=0;j<i+1;j++) printf("%c", Nombre[j]); printf("%c", '\n'); }
// Ejemplo quitando al principio
int k; for(int i=0;i<strlen(Nombre);i++) { k=0; for(int j=i;j<strlen(Nombre);j++) Salida[k++] = Nombre[j]; Salida[k] = '\0'; printf("%s", Salida); printf("%c", '\n'); }
12
« en: Jueves 4 de Mayo de 2017, 01:17 »
Prueba a poner doble \ en DaBaseFileName.
Un saludo.
13
« en: Jueves 15 de Diciembre de 2016, 22:13 »
Hola, cuando un campo es igual en mas de una tabla tienes que usar alias. Esta consulta no tiene sentido:
string consultaSQLA = "SELECT Legajo FROM InasistenciasSecretario, InasistenciasJefatura, InasistenciasDirector, InasistenciasBedel WHERE Legajo = " + txtLegajo.Text + "";
No haces JOIN de las tablas.
Para contar los registros usa SELECT COUNT(LEGAJO) FROM TABLA WHERE ...
Un saludo.
14
« en: Domingo 11 de Diciembre de 2016, 15:12 »
Al tratar el dato como string debes poner el número tres entre comillas.
15
« en: Sábado 10 de Diciembre de 2016, 20:30 »
Cuando me pasaba eso quitaba los try catch e iba poniendo MessageBox.Show("1"), MessageBox.Show("2"), etc entre las líneas para ver donde llegaba y donde se para. O bien ejecuta la aplicación en debug línea por línea a ver donde se para o da error.
16
« en: Sábado 10 de Diciembre de 2016, 20:12 »
Pon el código sin los bloques try catch para si te da error ver donde es.
17
« en: Sábado 10 de Diciembre de 2016, 18:22 »
Te puse un ejemplo, cambia la tabla y los campos por los de tu base de datos. Inventario por InasistenciasJefatura y los campos de tu tabla y pasa los parámetros tuyos.
18
« en: Sábado 10 de Diciembre de 2016, 18:01 »
Perdón, si, el Open hay que hacerlo, estaba confundido. @PAlmacen es el parámetro a pasar y tbAlmacen.Text es el valor del dato en el form. En el INSERT no pongo los datos de la base de datos por que se los paso igual que están en la BD, podría ser así también:
sbQuery.Append("INSERT INTO Inventario (Almacen, Fecha, Articulo, Unidades) VALUES(@PAlmacen, @PFecha, @PArticulo, @PUnidades)");
También vale como lo has puesto tu, a mi me gusta más por parámetros para hacer mas legible el código:
string consultaSQL = "INSERT INTO InasistenciasJefatura (Legajo,Estado,Fecha,Cargo,Turno,Aviso) VALUES " + txtLeg.Text + ""+ txtEstado.Items + "" + txtFecha.Text +""+ Cargo.Items + ""+ txtTurno.Text + "" + txtAviso.Text+ "" ;
string consultaSQL = "INSERT INTO InasistenciasJefatura (Legajo, Estado, Fecha, Cargo, Turno, Aviso) VALUES (@Legajo, @Estado, @Fecha, @Cargo, @Turno, @Aviso)";
Ahí tienes ejemplos de datos alfanuméricos, fecha y numérico.
19
« en: Sábado 10 de Diciembre de 2016, 16:59 »
aquí tienes un ejemplo de como lo hacía yo pasando los parámetros a la sentencia SQL, no debes ejecutar el Open() este es para consultas SELECT que devuelven resultado, para UPDATE e INSERT es con ExecuteNonQuery.
sbQuery = new StringBuilder(""); sbQuery.Append("INSERT INTO Inventario VALUES(@PAlmacen, @PFecha, @PArticulo, @PUnidades)"); cmd.CommandText = sbQuery.ToString(); cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@PAlmacen", tbAlmacen.Text); cmd.Parameters.AddWithValue("@PFecha", dtFecha.Value.Date); cmd.Parameters.AddWithValue("@PArticulo", tbArticulo.Text); cmd.Parameters.AddWithValue("@PUnidades", dUnidades); cmd.Connection = conn; cmd.ExecuteNonQuery();
20
« en: Sábado 10 de Diciembre de 2016, 00:22 »
Vaya, bueno por lo menos funcionó. Un saludo.
21
« en: Viernes 9 de Diciembre de 2016, 21:47 »
Pon un else que display algo a ver si es que no existe el legajo
if (lector["Legajo"].ToString() == txtLegajo.Text) { Form2 segundo = new Form2(); segundo.ShowDialog(); } else ...
22
« en: Viernes 9 de Diciembre de 2016, 18:21 »
despues de SqlCeConnection conn = new SqlCeConnection();
23
« en: Viernes 9 de Diciembre de 2016, 17:08 »
Lo que veo distinto es que yo el string se lo muevo luego y no en la creación como tu, yo lo tengo así:
conn.ConnectionString = "Data Source= " + ruta + "ChenWM.sdf;";
Prueba a quitarlo de la declaración y añadirlo luego del new a ver.
24
« en: Viernes 9 de Diciembre de 2016, 16:39 »
El ejemplo que te puse es de algo echo por mi hace mucho tiempo, ya no uso C#, fue echo para SQL CE de unas PDA, supongo que será equivalente al Ole pero no te lo puedo asegurar, si alguien por aquí domina el tema y opine mejor, y sí, en conn va el string de conexión que has puesto. En cuanto a ponerlo en el Form o en el evento del click de ratón depende de como quieras, si lo haces en el click, abres la base de datos, compruebas y cierras la conexión, si lo hacen el el Form al crearlo, por ejemplo, define las variables generales y mantienes abierto el cursor a la base de datos hasta que tu quieras o se cierre el programa. De todas formas, si alguien por aquí lee esto y conoce el C# mejor que opine, lo que te digo yo es de memoria y de hace años. Un saludo.
25
« en: Jueves 8 de Diciembre de 2016, 23:43 »
Hola de nuevo, no tengo compilador para probar pero prueba este código, en sbQuery asigno la sentencia SQL, luego se la asigno al comando a ejecutar y luego compruebo si es igual. antes asigna a conn el string de conexión.
SqlCeConnection conn = new SqlCeConnection(); StringBuilder sbQuery = new StringBuilder(); SqlCeCommand cmd = new SqlCeCommand(); IDataReader dr;
sbQuery.Append("SELECT Legajo FROM Personal WHERE Legajo = " + txtLegajo.Text + "'"); cmd.CommandText = sbQuery.ToString(); cmd.Connection = conn; dr = cmd.ExecuteReader(); while (dr.Read()) { if (dr["Legajo"].ToString() == txtLegajo.Text) { Form2 segundo = new Form2(); segundo.ShowDialog(); } } dr.Close();
|
|
|