![]() |
Determinar cual es el campo que existe
hola muchachos como estan todos
Necesito una pequeña luz para resolver un problema Tengo 4 campos y quiero que me diga cual o cuales fueron los campos que encontro iguales en la base de dato Me explico mejor. Estoy usando delphi 7 una tabla llamada = suplidor Con cuatro campos llamados = (RNC, Suplidor, Telefono y Email) Un Adoquery llamado = Temp 2 Maskedit llamados = (MERnc y METelefono) 2 Edit llamados = (EDSuplidor y EDEmail) Pongo el Codigo
Lo que deseo es, tengo cuatro campos si ustedes ven cuando encuentra los datos en la base de dato esta me dice en general que registro existe, pero deseo que lo haga campo por campo que si fue RNC, me diga RNC Existe, si Fue TElefono Me diga Telefono Existe, si fueron 2 o mas me lo diga en un solo letrero es eso posible ayundenme por favor. |
Yo creo que habria que lanzar la consulta tantas veces como campos quieres comparar y guardar los resulados positivos en una variable de tipo texto.
Var xxx:String xxxx:='Se encontraron resultados en los campos:'; Si consulta no está vacía: xxx:=xxx+Nombre_del_campo; así hasta completar los 4 campos. Primero lanzar una con los 4 campos a la vez por si no hubiese ningún resultado no seguir con el resto. Un Saludo. |
marcoszorillas podrias explicarme mejor con el codigo porque no se mucho de programacion
por favor |
Y así hasta testar todos los campos. Un Saludo. |
marcoszorrilla este codigo no me funciona tienes otra idea amigo por favor
|
por favor alguien puede ayudarme a con el codigo que necesito por favor
muchachos ayudenme que estoy desde ayer sin solucionar este lio si tengo que explica mejor diganmelo |
Cita:
Según lo que leí, el código que puso marcos, debería funcionar correctamente. Hubiera sido mejor que pusieras el error generado o explicar mejor el resultado que buscas, yo interpreto tu planteo como marcos. Igual te pongo un código (que básicamente hace lo mismo) y pone además la cantidad de veces que está repetido el dato. Por ahí podés sacar alguna idea de él.
La función la pensé para ser usada con un ShowMessage, de ahí (#10#13). Saludos. :) |
como estas ecfisa
el codigo que marco me dio no hace nada no me da error ni nada simplemente cuando le doy al boton no hace nada, es como si no funcionara voy a probar lo que me diste haber te cuento luego. |
ecfisa tampoco me funciono me voy a explicar mejor
Lo que deseo es que cuando encuentre un registro en la base de datos ya sea por RNC, Suplidor, Telefono o Email me diga registro existe. el codigo que puse al principio me lo dice osea funciona bien. lo que deseo es que me diga si el registro encontrado igual en la base dec dato fue el RNC o si fue El Suplidor o si fue El telefono o Si fue el Email. Ejemplo: si digito el RNC y el Suplidor y los registro ya existe de ambos me diga RNC y Suplidor Existe y asi con los demas Vuelvo a Colocar el Codigo
Todo esto sucede antes de grabar la informacion en la base de dato estoy evitando duplicar informacion. haber ecfisa y marcos si me pueden ayudar ahora que me explique mejor si no se entiene por favor haganmelo saber, es que el proyecto de la universidad tengo que entregarlo. |
Hola de nuevo Agustín.
El código funciona, ya que lo probé. ;) Lo que sucede es que antes no entendí bién lo que buscabas y lo anterior no es lo adecuado para lo que intentas hacer. Este creo que va más acorde:
Ejemplo de llamada
Recordá desactivar Save Literal Characters, haciendo doble click sobre la propiedad EditMask en cada TMaskEdit. (o desactivarla desde código y restaurarla después de la comprobación) Saludos. :) |
voy a probar ecfisa excusame mi ignorancia pero no se trabajar con funciones nunca lo he usado puedes decirme como pongo la funcion a funcionar dentro del boton guardar
excusame pero estoy tratando de aprender a programar |
Hola Agustin.
No tenes nada de que excusarte. ;) Hay que poner la cabecera de la funcion en la sección private o public de la clase TForm:
Saludos. :) |
ok voy a probar luego te cuento
|
ecfisa estoy haciendo algunos arreglos te cuento mañana como anda todo
|
Atencion Ecfisa y Marcos
Miren hice unos arreglos de los codigos que ustedes dos me dieron y pude mejor las cosas en un 50%, pero falta algo me explico. Primero Pondre el codigo para que lo vean Completo:
Si miran el "Procedure Guardarclick" fijense en cada uno de los "if DatoExiste" que hay 3, cada uno de ellos en el Showmessage tienen un letro diferente diciendome cual es el campo que existe en la base de dato si es el "RNC Existe", Si es el "Suplidor Existe" o si es el "Telefono Existe" individualmente eso esta bien. Pero cuando el encuentra dos campos por Ejemplo: RNC y Suplidor me tira dos mensajes que dicen "RNC Existe" y "Suplidor Existe" eso para mi esta mal porque debiera decirmelo en un solo mensaje por Ejemplo que diga "RNC y Suplidor Existen", y asi tambien con el campo telefono si lo encuentra debiera decirme en un solo letro tambien Ejemplo: "RNC, Suplidor y Telefono Existe", igual como si fuera un solo que encuentre que me diga ese solo. haber si me ayudanme mejor ahora, ya falta poco muchachos cuanto dolor de cabeza le doy pero los considero mis amigos a todos y hablo muy bien del foro con mis amigos en facebook, la universidad y el trabajo. Nota: Lo que deseo es que me diga en un solo Showmessage cuales son los campos que encontro en la base de dato, si fue RNC, Suplidor, Telefono o Email, si fueron dos campos o tres o los cuatro que me lo diga pero en un solo Showmessage.. |
Hola Agustin.
Entonces alguna de las primeras propuestas es la que corresponde usar. De este último modo te va a dar tantos mensajes como campos duplicados encuentre. En las primeras propuestas, se concatenaban en una cadena todas las duplicaciones encontradas para mostrarlas en un solo mensaje. Creo que deberías trabajar sobre ellas. Tu código también deberá ser congruente a esa lógica, mostrando la cadena obtenida (si la hay) antes de guardar. Particularmente este modo de trabajo no me convence, es mucho más sencillo y eficiente trabajar directamente con los DataControls. Saludos. :) |
Hola.
Se ocurrió algo que quizá te pueda aportar una idea:
Te mostrará un sólo mensaje y como son evaluados en órden inverso a su Tab Order, el SetFocus te posicionará en el primer campo duplicado. Como sugerencia, sacar con el Input Mask Editor la opción Save Literal Characters ( en vez de borrar la máscara por código ) va a hacer tu código más simple. Saludos. :) |
Estoy de acuerdo con la última propuesta que consiste como yo también apunté en el ejemplo un tanto superficial que mostré en ir acumulando en una variable de texto todos los campos que resulten positivos en la consulta y al final realizar un simple ShowMessage mostrando los resultados, también convendría controlar sino se obtiene nada para mostrar en este caso otro mensaje distinto.
Un Saludo. |
ecfisa ahora si el codigo confuciona bien pero hay un error cuando corre el programa que dice:
[warning] suplidor.pas [823]: variable 'TC' might not have been initialized. como se corrige ese error. pero el programa como quiera funciona porque ya lo probe solo debo hacer los arreglos del maskedit |
tenias razon ecfisa quitando el save literal character era mas sencillo
solo falta corregir el error que me da [warning] suplidor.pas [823]: variable 'TC' might not have been initialized. Pero vuelvo y te digo el programa corre y se ejecuta bien |
Cita:
Vas a ahorrar mucho tráfico con la DB. Saludos. |
Cita:
Saludos. :) |
ahora si amigo todo anda de maravilla gracias a ti "Ecfisa y a Marcoszorrilla" les agradezco mucho su ayuda.
y sobre todo a ti que siempre me ayudas ecfisa en verdad que tienes mucha paciencia con nosotros que no sabes tanto de programacion. muchas gracias por todo. |
| La franja horaria es GMT +2. Ahora son las 19:05:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi