Power Builder - X Retrival Arguments

 
Vista:

X Retrival Arguments

Publicado por xfanatico (30 intervenciones) el 20/10/2002 07:10:35
necesito es hacer un codigo q me permita tomar X parametros para recuperar una fila de una datawindow

la cantidad de columnas de la datawindow la puedo obtener asi : i=dw_1.describe("datawindow.column.count")

¿Existe alguna manera de saber cuales son los Retrival Arguments de una datawindow cualquiera, (en que columnas de la datawindow se encuentran) ?

para luego enviarlas asi: dw_datos.Retrieve( parametros )

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:X Retrival Arguments

Publicado por Ricardo (1957 intervenciones) el 21/10/2002 16:34:23
Hola que tal:

Algo que te puede servir de mucho es lo siguiente.

Tu DW que tienes con los argumentos del retrieve exportalo, es decir, exporta la sintaxis, ahi podras analizar donde se encuentran situados dichos valores y solo los modificas con el describe.

Esto es solo para saber de que manera se comportan los campos en la creacion de un DW y saber como manejarlos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por xfanatico (30 intervenciones) el 22/10/2002 06:01:42
en la sintaxis de una de las datawindows tengo esto:

SELECT "zonas"."zona",
"zonas"."descripcion"
FROM "zonas"
WHERE ( zonas.zona = :zonas ) AND
( "zonas"."descripcion" = :descripcion )

en este caso los "Retrival Arguments" son las dos columnas (zona y descripcion),
tambien tengo otras datawindows distintas.

no se con que funcion se exporta la sintaxis de la datawindows.

luego podre analizar con el comando describe.

Si consigo averiguar si una columna es un "argumento de recuperacion" ,
el problema estaría solucionado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por juan (89 intervenciones) el 22/10/2002 09:20:13
Lo puedes conseguir sacando la sql de la dw con la funcion getsqlselect() y luego buscando por la cadena ":" que el el caracter que precede a todos los retrieval arguments de ahi solo tendras que sacarte el resto de la palabra hasta el primer espacio en blando o parentesis, luego solo tendras que contar el numero de palabras obtenidas.

Espero haberte dado una idea, pq en la funcion habra que hacer mas controles pero la idea puede ser esa
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por xfanatico (30 intervenciones) el 23/10/2002 03:35:26
la idea es exactamente esa !!!

la cadena es esta:
SELECT "marcas"."marca",
"marcas"."descripcion"
FROM "marcas"
WHERE ( marcas.marca = :marcas ) AND
( "marcas"."descripcion" = :descripcion )

con la funcion pos( ) puedo hallar la primera posicion de ":" en la cadena.

como cuento las veces que aparece ":" en la cadena ? ...para hallar en numero de "argumentos de recuperacion"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por Sergio (52 intervenciones) el 23/10/2002 08:13:37
Hola,

Según la sintaxis Pos ( string1, string2 {, start } ), tendrías que crearte un integer para substituirlo por el 'start' cada vez que en cuentres la cadena deseada (el integer sería la posición encontrada mas uno).

Lo podrías hacer en un bucle hasta la longitud de string1.

Comenta la evolución de tu progroma, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por xfanatico (30 intervenciones) el 23/10/2002 08:34:54
gracias, he conseguido el numero exacto de argumentos de recuperacion.

ahora llega la ultima parte....

En este caso he encontrado 2 argumentos de recuperacion, y los he puesto en las 2 primeras posiciones de este vector : valor[1] y valor[2]

y recupero los datos asi : dw_datawindows.Retrieve(valor[1],valor[2])

....pero la cantidad de argumentos de recup. puede variar

¿Existe alguna forma elegante de enviar los argumentos de recuperacion encontrados ?

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por Sergio (52 intervenciones) el 23/10/2002 12:28:28
Hola denuevo,

Elegante, elegante no se me ocurre nada, pero si lo podrías hacer con un CHOOSE CASE, y para cada caso poner el código correspondiente.

Tendría q ser un CHOSE CASE Num_Argumentos, y según los argumentos encontrados hacer un caso u otro.

Es una solución un poco chapuza, pero a voz de pronto no se me ocurre nada mas.

Espero que te sirva y sigue comentando la evolución de tu programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por xfanatico (30 intervenciones) el 23/10/2002 12:45:26
es la misma solucion que se me ha ocurrido....

y bastante cachuza....

int filas_recuperadas
CHOOSE CASE cantidad_de_argumentos( )
CASE 1
filas_recuperadas=dw_datos.Retrieve(valor[1])
CASE 2
filas_recuperadas=dw_datos.Retrieve(valor[1],valor[2])
CASE 3
filas_recuperadas=dw_datos.Retrieve(valor[1],valor[2],valor[3])
CASE 4

tratare de buscar algo mas "elegante"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:X Retrival Arguments

Publicado por juan (89 intervenciones) el 24/10/2002 09:47:54
la forma mas elegante es definirte el vector de tamaño 30 por ejemplo : any valor[30] y ponerle al retrieval las 30 posiciones, asi de simple dw_datos.Retrieve(valor[1],valor[2],valor[3], .... , valor[30]) ya que si a una dw si le pasas valores de mas le da igual, el problema es si le pasas de menos
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias

Publicado por xfanatico (30 intervenciones) el 25/10/2002 04:33:59
es cierto...con esto esta "elegantemente" solucionado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar