Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2004
ramonibk ramonibk is offline
Miembro
 
Registrado: may 2004
Posts: 193
Poder: 20
ramonibk Va por buen camino
Pasar String a Integer

Buenos dias.
Bueno mi problema es el de siempre. Que todavia no se muchas cosas.......

Pero en concreto ahora me preocupa lo sigiente.

he hecho un Query para generar un Update. y hasta hay perfecto,
pero la cosa es que para que el Update funcione correctamente le tengo que pasar el Id sobre el que quiero que me actue, este Id Lo tengo pintado en el formulario, pero a la hora de pasarlo al Query me da un problema de incompatibilidad de tipos,

la manera de intentarlo es.
qryVisado.ParamByName('_Id').Value:=Ed_Id.text;
pero claro esta el Id del formulario es un String y lo que el Query espera es un Integer.
como puedo pasar de un tipo a otro??????
Se que hay un metodo que es "Val()" pero no me aclaro con el.
Por lo cual solicito ayuda.
Gracias a todos por Buestra atencion.
Responder Con Cita
  #2  
Antiguo 07-09-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
StrToInt


No obstante, te aconsejo usar controles específicos para número (estilo a CurrencyEdit de las RxLib)
Responder Con Cita
  #3  
Antiguo 07-09-2004
JoseQ JoseQ is offline
Miembro
 
Registrado: jul 2004
Posts: 167
Poder: 20
JoseQ Va por buen camino
inttostr(integer)

strtoint(string)

i asi un sinfin de funciones para pasar de un tipo a otro.

tambien puedes sacarlo directamente de la tabla como un string

tabla1campo.asstring

o integer

tabla1campo.asinteger

existen muchos mas metodos, pulsa F1 i buscalos en la ayuda de delphi
Responder Con Cita
  #4  
Antiguo 07-09-2004
ramonibk ramonibk is offline
Miembro
 
Registrado: may 2004
Posts: 193
Poder: 20
ramonibk Va por buen camino
MUchas Gracias me ha funcionado perfectamente
con StrToInt.
Responder Con Cita
  #5  
Antiguo 07-09-2004
PARF PARF is offline
Registrado
 
Registrado: sep 2004
Posts: 2
Poder: 0
PARF Va por buen camino
Conversion

La conversión se hace: StrToInt(Ed_Id.Text);

Se puede utilizar en el query
qryVisado.ParamByName('_Id').AsInteger:=StrToInt(Ed_Id.text);
Responder Con Cita
  #6  
Antiguo 07-09-2004
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 21
buitrago Va por buen camino
Try

De todos modos, este tipo de conversiones, que pueden EXPLOTAR, debes hacerlas dentro de un TRY

Saludos

Fer
Responder Con Cita
  #7  
Antiguo 08-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Solo aclarar que el parámetro tiene una propiedad AsString a la que directamente le podrias asignar el string, sin conversión alguna.

query.parambyname('codigo').AsString := label1.caption;

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 08-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
query.parambyname('codigo').AsString := label1.caption;
Edito:

Si usas AsString, ¿no queda el valor encerrado entre comillas?

// Saludos
Responder Con Cita
  #9  
Antiguo 09-09-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Cita:
Empezado por roman
Edito:

Si usas AsString, ¿no queda el valor encerrado entre comillas?

// Saludos
No, porque el campo al que asignas no sabe almacenar strings, solo numeros, ya que es de tipo entero. Al usar AsString, le indicas al objeto TField que el numero a asignar esta en forma de string, de modo que el objeto TField hace la conversion STrToInt internamente y despues asigna el entero resultante al campo.

Independiemente de esto las comillas en una variable de cadena no se guardan, las comillas son unos delimitadores del lenguaje para que el compilador sepa que lo que estas asignando es una cadena de texto no un numero. Es decir las comillas que delimitan cadenas solo tienen sentido en el codigo fuente para diferenciar unos tipos de valores de otros, pero no existen, no aparecen por ningun lado en el ejecutable resultante traducido a codigo maquina.

Saludos
Miguel
Responder Con Cita
  #10  
Antiguo 09-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por Mick
No, porque el campo al que asignas no sabe almacenar strings, solo numeros, ya que es de tipo entero. Al usar AsString, le indicas al objeto TField que el numero a asignar esta en forma de string, de modo que el objeto TField hace la conversion STrToInt internamente y despues asigna el entero resultante al campo.
Pues no estamos hablando de TField sino de TParam. De todas formas supongo que el comportamiento será similar.

Cita:
Empezado por Mick
Independiemente de esto las comillas en una variable de cadena no se guardan, las comillas son unos delimitadores del lenguaje para que el compilador sepa que lo que estas asignando es una cadena de texto no un numero. Es decir las comillas que delimitan cadenas solo tienen sentido en el codigo fuente para diferenciar unos tipos de valores de otros, pero no existen, no aparecen por ningun lado en el ejecutable resultante traducido a codigo maquina.
No creo que le hiciera falta la aclaración a Roman... . De todas formas, supongo que román se referia a que el dato se trasladara entre comillas al servidor de base de datos. NO estoy seguro de esto, y no habia replicado por ello. Aunque el dato se traslade entre comillas, la mayoría de SGDBs haran una conversión automática de tipos. El problema radica en que si existe la posibilidad que el dato trasladado no sea un número, se hará trabajar innecesariamente al servidor con algo que pudo comprobarse en el cliente.

A los parámetros, puede asignarseles el tipo de dato (DataType) en tiempo de diseño. NO puedo comprobarlo ahora, pero es probable que al tener definido algún tipo de dato numérico (ftInteger, ftSmallInt, ftFloat, ftCurrency o ftBCD) esta comprobación la realizaria también automáticamente. Si alguien puede probarlo y sacarnos de la duda, se le agradece.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 09-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Uy! Ahora sí me regresaron al kinder

A lo que me refería en efecto, es a las comillas en SQL no en el código fuente. Si hago una consulta como

Código SQL [-]
select * from tabla
where nombre = roman

obtendré un error ya que roman se interpretará como nombre de campo en lugar de la cadena "roman".

En una consulta como

Código SQL [-]
select * from tabla
where nombre = :nombre

Cuando asignamos el parámetro con AsString se colocan las comillas alrededor del valor:

Código SQL [-]
select * from tabla
where nombre = 'roman'

Aun siendo el parámetro de tipo entero, AsString coloca las comillas. Mi confusión fue que no tomé en cuenta que el servidor hacía la conversión de tipos.

// Saludos
Responder Con Cita
  #12  
Antiguo 09-09-2004
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 21
buitrago Va por buen camino
QuotedStr

usa QuotedStr para ponerle comillas a tu texto antes de mandarlo.

Saludos

Fer
Responder Con Cita
  #13  
Antiguo 09-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino




Creo que este tema está confundiendo a los visitantes...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:13:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi