Join crystal report con distinto tipo de dato

Buen día, estuve buscando al solución y no logro ejecutarla.
Tengo que realizar un join entre dos tablas:
DLN1.ObjType (string)
OITL.DocType (number)

En crystal me aparece el mensaje que no se puede hacer el join porque son datos de distintos tipos.

Buscando la solución encontré que debo hacer una fórmula para convertir de text a number y luego hacer el join, pero no me funcionó.

También otra solución decía que en el select expert coloque la fórmula para el dato y haga el join, tampoco logré que funcione.

Alguien me puede dar una mano con ésto?

Muchas gracias a todos y que tengan buen día.

tiene que convertir algunos de los dos datos utiliza algunas de las dos formas esto es para convertir en entero, puedes hacerlo a varchar o viceversa.

convert (int, columna)
CAST(columna AS int)
1 me gusta

Kripto gracias por tu rta pero excede un poco mis conocimientos.
Cómo llevaría a cabo dicha conversión?
En fórmula? y luego el campo lo tengo que aplicar al rpt?
posterior a eso podría realizar el JOIN?

muestra tu query completo y es mas fácil ayudarte!

el problema lo tengo en que es el QUERY que arma CR, el rpt no está planteado con comando, vista, store procedure, etc…
se levantaron las tablas en el rpt y se procedió a hacer los JOIN
La query en HANA que está correcta no hace falta que convierta a número el dato de cadena.

 SELECT "OCRD"."CardCode",
 "ODLN"."Address2",
 "ODLN"."CardName",
 "ODLN"."Address",
 "ODLN"."DocEntry",
 "OCRD"."LicTradNum",
 "DLN1"."Dscription",
 "DLN1"."ItemCode",
 "DLN1"."Quantity",
 "ODLN"."DocDate",
 "DLN1"."VendorNum",
 "DLN1"."SWW",
 "DLN1"."UomCode",
 "ODLN"."NumAtCard",
 "OCRD"."U_B1SYS_VATCtg",
 "OSHP"."TrnspName",
 "OSHP"."WebSite",
 "OBTN"."DistNumber",
 "OBTN"."ExpDate",
 "OCRD"."Free_Text"
 FROM   
 {oj ((("ODLN" "ODLN" INNER JOIN "DLN1" "DLN1" ON "ODLN"."DocEntry"="DLN1"."DocEntry") 
 INNER JOIN "OCRD" "OCRD" ON "ODLN"."CardCode"="OCRD"."CardCode") 
 LEFT OUTER JOIN "OSHP" "OSHP" ON "ODLN"."TrnspCode"="OSHP"."TrnspCode") 
 Inner join OITL ON ("DLN1"."LineNum" = "OITL"."DocLine") AND ("DLN1"."DocEntry" = "OITL"."DocEntry") and "OITL"."DocType" = "DLN1"."ObjType"
 INNER JOIN ITL1 ON "OITL"."LogEntry" = "ITL1"."LogEntry"
 INNER JOIN OBTN ON "ITL1"."ItemCode" = "OBTN"."ItemCode" AND "ITL1"."SysNumber" = "OBTN"."SysNumber"}
 WHERE  "ODLN"."DocEntry"= 3032 and "OITL"."DefinedQty" <> 0
 ORDER BY "ODLN"."DocEntry", "DLN1"."ItemCode"

no sé si me expliqué bien.

ah comprendo, si porque en sql me corrió bien, sin problema solo había un campo que no tengo, supongo que es definido.
image
entonces yo creo que es el crystal.
Deberías mejor hacer la consulta como una vista! o muestra el error que sale en crystal.

Claro en HANA me trae correcto todo pero en CR me sucede ésto al querer hacer el JOIN entre DLN1.ObjType con OITL.DocType
image
estuve viendo que alguna solución posible es hacer un subreporte, generar una fórmula convirtiendo de string a number el valor de DLN1 y luego hacer el JOIN, pero no logré hacer que funcione o se me está escapando algo que no logro ver

Intenta con esta corrección solo en crystal

 OITL.DocLine) AND (DLN1.DocEntry = OITL.DocEntry) and CAST(OITL.DocType AS nvarchar) = DLN1.ObjType
 INNER JOIN ITL1 ON OITL.LogEntry = ITL1.LogEntry
 INNER JOIN OBTN ON ITL1.ItemCode = OBTN.ItemCode AND ITL1.SysNumber = OBTN.SysNumber}
 WHERE  ODLN.DocEntry= 3032 and OITL.DefinedQty <> 0
 ORDER BY ODLN.DocEntry, DLN1.ItemCode

image

Pero en crystal no sé cómo editar el Query.
eso es lo que me traba

Si son mínimos los datos que vas a recuperar de esa tabla, evalúa la opción de crear un campo de SQL, en él podrás meter código para recuperar valores, es como una subconsulta.

image

Saludos.

1 me gusta

No se si cambie mucho el crystal en hanna pero en sql es asi:
image
y luego aqui
image
Despues te pide acceso a tu base de datos
image
Ingresas clave y ya puedes editar el query con clic derecho editar
image

Claro el tema es que no tengo armado por comando el rpt
image
Estoy viendo de armar de cero un rpt con el command que hice la prueba en HANA ya que me está llevando muchísimo tiempo tratar de hacer el JOIN ese

Cuando tu origen de datos no es un Comando, los campos de expresiones de SQL son de gran ayuda para recuperar datos sin hacer un Join directo a la tabla.

Saludos.

1 me gusta

Gera me estás matando con eso jajajaj
Que me digas esa respuesta y que me escribas en Arameo es casi lo mismo, perdón pero excede a mis conocimientos.
No sabría qué hacer en los campos de expresiones de sql =(

Que tal Juan Pablo.

Creo que todos comenzamos desde 0, de hecho yo soy Administrador por profesión, el tema es solo investigar un poco.

Saludos. :wink:

me profesionalicé durante 21 años trabajando como encargado de BackOffice en exportación de commodities y hace un año que arranqué en el mundo SAP B1 y todo lo que aprendí a hoy fue autodidacta, programación básica de SQL, crystal report,HANA, etc…
investigo horas y horas por día, cuándo no llego a una solución recurro a éste foro para consultar.
antes de escribir acá probé todo lo que etendí de las posibles soluciones que encontré en la web, pero ninguna resultó.
hay veces que coloco un pregunta aquí y me soluciona la vida, pero nunca vengo de vago a preguntar primero acá
gracias como siempre por tu ayuda Gera
Abrazo :wink:

1 me gusta

Amigo debes quitar todas las tablas y ahí puedes crear un comando nuevo, así podrás ingresar tu query ahí mismo en la captura que has presentado.

Si lo haces por comando, y se ejecuta en Hana Studio sin problema se ejecuta en Crystal. Si agregas las tablas y tienes el problema con los vínculos por el tipo de dato entonces puedes usar formulas de selección. Creo que así sale:

image
image

2 Me gusta

muchisimas gracias!!! me solucionó el problema la explicación cómo a un niño!
debía ponerlo en el RECORD SELECTION y no en un campo, en un subinforme, etc… cómo venía viendo en varios lados.
abrazo gradne a todos

2 Me gusta