Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Convertir campos string a int (https://www.clubdelphi.com/foros/showthread.php?t=72025)

elea 24-01-2011 21:48:14

Convertir campos string a int
 
Buenas tardes a todos

Espero que esten bien,mi duda es, necesito mostrar calificaciones cursadas y no cursadas con su respectiva calificacion, pero si la materia no esta cursada entonces mostrar "=". El campo de la calificacion es int, estoy usando sql server y delphi 2010.
Asi necesito que se vea
Materia -----Calificacion
matematicas ----8
español--------- 9
historia ---------=
ingles -----------=

Caral 24-01-2011 21:57:46

Hola
No entiendo la razon de la pregunta (cambiar string a int)????.
Por otro lado para que en la consulta SQL salga el signo de = lo que se tiene que usar es una sentencia con CASE WHEN, que creo casi todos los motores aceptan.
Tambien podria ser IIF, IF etc. etc...
Saludos

elea 24-01-2011 22:07:01

Estoy haciendo reportes con QuickReports necesito generar una boleta con todas las materias la consulta sql la hago de la siguinet manera

Código SQL [-]
size="2">size="2">select 
casesize="2">size="2">whensize="2">calificacion size="2">size="2"><>size="2"> 0 size="2">size="2">THENsize="2"> calificacionsize="2">size="2">ELSEsize="2"> '='size="2">size="2">endsize="2">size="2">)size="2">size="2">assize="2"> calificacion from materias
pero como el campo calificacion es int no me acepta que mande "="

Caral 24-01-2011 22:11:37

Hola
Y no acepta Null ?
No se entiende la consulta, la verdad.
Saludos

elea 25-01-2011 00:16:53

codigo
 
select materia, (case when calificaciones <>0 then calificaciones else '=' end) as calificaciones
from materias

Una disculpa por el codigo anterior, lo marque en las etiquetas de sql y no se que le hizo, lo que quiero hacer es mostrar las materias con su respectiva calificacion, pero si la calificacion aun no tiene materia asignada, mostrar un signo '=' en la boleta que voy a imprimir.

Saludos muchas gracias y ojala se entienda

Caral 25-01-2011 01:32:55

Hola
En sql server me parece que es asi:
Código SQL [-]
select materia, (case calificaciones when <> 0 then calificaciones else '=' end) as calificaciones from materias

En access y Firebird acepta IFF, asi:
Código SQL [-]
select materia, IIf(calificaciones <> 0, '=') AS calificaciones from materias
Mas sencillo.
Saludos
PD: Por lo menos en access no genera ningun error al cambiar un integer por un signo =, no se que pasara en Sql Server

elea 25-01-2011 02:15:19

S
 
Resolvi el problema, me funciono de la siguiente manera

select materia,
(
case when CONVERT(nvarchar(20),(case when calificaciones<> 0 THEN calificaciones ELSE 0 end))='0' then '=' else CONVERT(nvarchar(20),calificaciones)end)as calificaciones from materias


Muchas gracias Caral po tu apoyo, espero y les sirva la solucion que encontre

ecfisa 25-01-2011 05:03:21

Hola elea.

Ví el trabajo que te tomaste para resaltar la sintáxis SLQ y debo reconocer que has echo una tarea muy prolija ;), pero muy tediosa...

Te hago una sugerencia que te vá a ahorrar mucho tiempo: Podes utilizar la etiqueta [sql] al comenzar el código y [/sql] al finalizarlo.

Te queda así:
Código SQL [-]
select materia,
(case when CONVERT(nvarchar(20),(case when calificaciones<> 0 THEN calificaciones ELSE 0 end))='0' then '=' 
else CONVERT(nvarchar(20),calificaciones)end) as calificaciones from materias
Reconozco que el tuyo es más elegante :), pero lo importante es que sea legible...

Existen diferentes etiquetas para dar distintos formatos que ayudan a hacer más legible el código editado:[ Lista de Códigos vB ].

Un saludo y gracias por publicar tu solución.

elea 26-01-2011 18:13:38

Muchas gracias por la aclaración, te comento que si trate de utilizar las etiquetas SQL, pero no se porque modificaba el código a tal punto que no se podia leer y como no supe que tenia que hacer opté por agregar el código de la manera que lo hice.

Un saludo y de nuevo muchas gracias


La franja horaria es GMT +2. Ahora son las 02:49:58.

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