PDA

Ver la Versión Completa : Query restringir busqueda


el_barto
23-06-2005, 22:15:28
Hola compañeros de aventuras tengo un problemita que me tiene barado y solicito de su inmensa ayuda

necesito que mi query haga el siguiente select

select max(item_prod) as mayor from subprod

pero no se como decirle que ese item debe tomarlo del codigo escogido en el DBLookupComboBox.text donde por ejemplo tengo seleccionado el codigo 100 o el 200, en pocas palabras no se como armar el where porfa ayudenmeeeeee es de suma urgencia se los agradecere toda la vida

marcoszorrilla
23-06-2005, 22:23:00
Where LoQueSea = QuotedStr(DblookUpCombobox.Text);

Un Saludo.

el_barto
23-06-2005, 22:41:06
Marcos gracias por responderme antetodo gracias
me saca un error que dice:

Function unknown QUOTEDSTR
El combo tiene en listfield el nom_producto pero en el datasource y en el Datafield hacen referencia al codigo sera que debe ir asi:

Where cod_prod = QuotedStr(DblookUpCombobox.value);

marcoszorrilla
23-06-2005, 22:47:03
Where cod_prod = QuotedStr(DblookUpCombobox.Text);

QuotedStr ----> Esta definida en la Unidad SysUtils.

Un Saludo.

el_barto
23-06-2005, 23:07:04
Oye marcos no se que es lo que pasa ya mire y SysUtils si esta definida pero me sigue sacando el mismo inconveniente :confused: mira lo estoy haciendo asi

IBQuery1.SQL.Text := 'select max(item_comp) as mayor from subprod where cod_prod = QuotedStr(DBlookupComboBox-Text)'

me saca un error:

Function unknown QUOTEDSTR
Uso delphi 6

Igualmente muchisimas gracias por todo

roman
23-06-2005, 23:19:14
Hay que pensar un poquito antes de simplemente pegar el código.

QuotedStr es una función de Delphi y SQL no entiende de Delphi. Así que básicamente se trata de que uses la función para obtener un valor entrecomillado que puedas usar para armar la consulta. Y por armar la consulta me refiero a conformar la cadena de caracteres que vas a enviar al servidor.

La cadena que envíes deberá ser algo del estilo:

select max(item_comp) as mayor from subprod where cod_prod = "AF-404"

La cadena "AF-404" será la que obtengas con QuotedStr y usarás este valor para concatenarlo con el resto de la cadena.

// Saludos

el_barto
23-06-2005, 23:26:36
Marcos Roman ya lo logre muchisimas gracias aqui mando la instruccion para las personas que tengan este tipo de inconvenientes y nuevamente 10000000 miillones de gracias.


IBQuery1.SQL.Text := 'select max(item_comp) as mayor from subprod where cod_prod =' + QuotedStr(DBLookupComboBox1.KeyValue);

Gracias Totalessss :D :D :D

esto lo busque en internet pero ya no recuedo la pagina, la busco y la publico en este hilo gracias

el_barto
23-06-2005, 23:34:01
Lo prometido es deuda aqui esta el link es sobre freepascal pero he escuchado que freepascal es un version free de delphi entonces aqui esta el link freepascal (www.freepascal.org/docs-html/ rtl/sysutils/quotedstr.html)

roman
23-06-2005, 23:39:57
¡Pero si esta misma explicación podías encontrarla en la ayuda de Delphi!


QuotedStr returns the string S, quoted with single quotes. This means that S is enclosed in single quotes, and every single quote in S is doubled. It is equivalent to a call to AnsiQuotedStr(s, '''').



Use QuotedStr to convert the string S to a quoted string. A single quote character (') is inserted at the beginning and end of S, and each single quote character in the string is repeated.


:eek: :confused:

// Saludos

el_barto
23-06-2005, 23:47:13
Jejejeje uppssss no comprendi mucho la explicacion que lei en delphi en cambio en la pagina de freepascal entendi algo mas, es cuestion de entendimiento

JEJEJE ademas algo bueno paso de todo esto ahora puedo consultar la ayuda de freepascal no todo es malo, disculpame de todas maneras la torpeza, te debo una corona o mas bien algo mas fuertecito

roman
23-06-2005, 23:53:44
Tendrá que ser mezcal :confused:

Ahora, yo te recomiendo que, en lugar de armar tus consultas de esa forma, utilices parámetros ya que así obtienes códigos mucho más legibles. Por ejemplo:



IBQuery1.SQL.Text := 'select max(item_comp) as mayor from subprod where cod_prod = :codigo';
IBQuery1.ParamByName('codigo').AsString := DBLookupComboBox1.KeyValue;
IBQuery1.Open;


Quizá no sientas mucha diferencia, pero cuando tengas que armar consultas en las que debas sustituir varios valores más, te pondrás verde nada más de ver la concatenación final.

// Saludos

el_barto
24-06-2005, 00:03:05
Aceptada la sugerencia voy a pnerme al dia con mi codigo graciasssss

el_barto
24-06-2005, 14:40:48
Tendrá que ser mezcal :confused:
Lo que sea, aqui en Bogota cuando hay rumbita se toma hasta al agua de los floreros...
jajaja :D :eek: :) :cool: :p ;)