Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 24
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
  #2  
Antiguo 09-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
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
  #3  
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
  #4  
Antiguo 09-09-2004
buitrago buitrago is offline
Miembro
 
Registrado: sep 2003
Posts: 156
Poder: 23
buitrago Va por buen camino
QuotedStr

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

Saludos

Fer
Responder Con Cita
  #5  
Antiguo 09-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 13:12:04.


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
Copyright 1996-2007 Club Delphi