![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
#1
|
||||
|
||||
Hola dsa!
Nunca se va cumplir la condición y por eso te salta las líneas. Cuando haces un locate, te posicionas en el registro de la tabla, no puedes posicionarte en dos registros de la tabla a la vez por lo tanto nunca se cumple el if. Espero haberme explicado bien. En vez de locate utiliza lookup o bien create una nueva consulta. Espero que te sirva. Saludos! ![]() |
#2
|
|||
|
|||
Hola!!
He probado con esto; if (not (DataModule.Query1.Lookup('param1;param2', VarArrayOf(['edit1.text','edit2.text', []))) Pero tanto con Lookup como con Locate me salen los mismos errores; Missing operator or semicolon Ordinal type required Incompatible types: 'Integer' and 'String' Por lo que he visto en la ayuda del Delphi lo podria hacer tambien con un Locate. Ahora ya no se qué hacer. Muchas Gracias!! |
#3
|
||||
|
||||
Debieras de optar por la segunda opción que te indica Nuria, es decir crear una consulta con el predicado Or si obtienes algún registro haces lo que proceda.......
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#4
|
|||
|
|||
El planteamiento de dsa132132 es totalmente correcto, lo que pasa es que quizás en lugar de AND ha de ser un OR (tampoco se exactamente lo que quiere conseguir), pero el uso de los 2 Locates en el IF no es erróneo
Básicamente lo que hace el if este es que si no existe un registro en el que el campo "param1" sea igual a Edit1.Text (es decir, Param1 <> Edit1.Text) y sí existe un registro en el que el campo Param2 sea igual a Edit2.Text, muestre el mensaje Quizás es que Param1 y Param2 no son los nombres de los campos??? Si fuera esto, tendrías que quitarle las comillas No obstante, también creo que lo del SQL es una muy buena opción (por no decir la mejor si la tabla es grande) |
#5
|
||||
|
||||
Quizás no me explique bien, el uso de dos locates es correcto pero no el AND, porque nunca se cumplirá esa condición, no por otra cosa. Menos mal que siempre está cadetill para explicarlo mejor....;rolleyes:
|
#6
|
||||
|
||||
El problema es que no nos dice que comprobación es la que quiere realizar. Yo por ejemplo para eliminar un cliente supongamos que la condición es que no tenga ninguna factura ni ningún albarán.
nContro:=0; Busca Facturas. Si encuentra 1, no interesa si tiene más ó no. nContro:=nContro+1; Busca Albaranes, lo mismo que el anterior. nContro:=nContro+1;
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() Última edición por marcoszorrilla fecha: 03-09-2004 a las 15:30:12. |
#7
|
|||
|
|||
Hola a todos;
Quizás he sido yo desde un principio el que no se ha explicado con claridad, lo que intento es lo siguiente; Deseo eliminar en registro de la Base de Datos pero antes hago la comprobación de que ese registro existe en la Base de Datos. Hasta aqui bien. Ese registro que deseo eliminar tiene 3campos como clave primaria (antes había puesto sólo 2 por simplificar mi consulta, supongo que será lo mismo), entonces intentava hacer un Locate sobre esos 3 campos porque si lo hago sobre uno solo no es correcto. He probado con OR en vez de AND pero sigue saltándose la instrucción. Muchas gracias a todos por vuestro interés!! |
#8
|
|||
|
|||
Sí, vale, pero Busca Facturas y Busca Albaranes han de ser una función (por ejemplo) que realice o bien un Locate sobre las tablas pertienentes, o una sentencia SQL o lo que nos de la gana. Si la elección fuera la del Locate, se puede hacer todo directamente en el mismo IF y ahorrarnos la variable
![]() De hecho, yo más o menos suelo hacer lo mismo que tu, pero en lugar de la variable, pongo un Exit Como suelo hacer funciones, el que se encarga de mostrar o no el mensaje será el que llame a ésta. No obstante, como ya decía anteriormente y comentas muy bien, sin saber exactamente lo que pretende conseguir con esos Locates, es hablar por hablar |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
|