Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Establecer Tipos de Campos en cadena SQL (https://www.clubdelphi.com/foros/showthread.php?t=74170)

oscarac 02-06-2011 16:19:06

Establecer Tipos de Campos en cadena SQL
 
Buenos dias

tengo una pequeña duda que quiza puedan ayudarme a resolver, el tema es que en mi casa Utilizo MS SQL Server y en la oficina Uso Access (si Access)

digamos que tengo esta cadena
Código Delphi [-]
 
 StrSql := 'Select D.Tdc, D.Doc, D.KOD, P.Descl, D.Cant, D.PU, D.Pt ' +
            'from (tblConsumoD D ' +
            'Left Join tblArticulo P on D.KOD = P.KOD) ' +
            'Where D.TDC = ' + QuotedStr(qryConsultaValesConsumoTdc.Value) +
            ' and D.DOC = ' + QuotedStr(qryConsultaValesConsumoDOC.Value) +
            ' Order by D.Tdc, D.Doc ';
  qryDetalleValeConsumo.SQL.Clear;
  qryDetalleValeConsumo.SQL.Add(StrSql);
  qryDetalleValeConsumo.Close;
  qryDetalleValeConsumo.Open;

obiamente es nua consulta... pero para los campos Cant, PU, PT como les establezco el Tipo? Double? Integer?

Al González 02-06-2011 18:01:37

El tipo de dato de las columnas resultantes de la consulta lo determina el propio motor, pero también puedes "forzarlo" con la función nativa "Cast".

Código SQL [-]
Select D.Tdc, D.Doc, D.KOD, P.Descl, Cast (D.Cant As Double Precision)...

NOTA: Ahora no recuerdo si el tipo de dato Double Precision tiene el mismo nombre en Access.

Lepe 02-06-2011 18:56:38

Yo he entendido algo distinto, así que tú alclararás lo que querías preguntar.

Si tienes una claúsula where donde quieres usar el p.Cant por ejemplo, no usas el quotedStr y listo. Si quieres que sea un integer (no le añadas decimales) y si quieres el motor lo identifique como float, pues le añades el ".0" al final.

el código con Cant como integer y PU como float (para tener los dos ejemplos):
Código Delphi [-]
   qryDetalleValeConsumo.Close;
  qryDetalleValeConsumo.SQL.Text := 'Select D.Tdc, D.Doc, D.KOD, P.Descl, D.Cant, D.PU, D.Pt ' +
            'from (tblConsumoD D ' +
            'Left Join tblArticulo P on D.KOD = P.KOD) ' +
            'Where D.TDC = ' + QuotedStr(qryConsultaValesConsumoTdc.Value) +
            ' and D.DOC = ' + QuotedStr(qryConsultaValesConsumoDOC.Value) 
+         ' and D.Cant = ' + IntTostr(VariableIntegerCant) 
+         ' and D.PU = ' + FloatToStr(Variablefloat)
+
            ' Order by D.Tdc, D.Doc ';
  qryDetalleValeConsumo.Open;


Saludos

juanlaplata 04-06-2011 16:15:33

Te recomendaria que escribas esta misma consulta en el mismo Access. Luego, desde la opcion de diseño, donde ves todas las columnas (campos de consulta), pulsando Ctrl F2 sobre , en este caso "Cant", te abre el editor de campos, columnas, y desde alli opcion de un monton de funciones propias de Access, entre ellas:
CDbl([PU]) AS PU_doble,
CInt([Cant]) AS Cant_int,

saludos, suerte.


La franja horaria es GMT +2. Ahora son las 06:27:59.

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