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 16-11-2006
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola, creo que debes reconciderar el uso del SQL, con esto no te digo que cambies nada, pero si muy bien podrías ausiliarte de una función que use una instrucción sql para resolber tu problema:

Te confieso que no estoy muy empapado en tu programa, no se los componentes que usas etc, pero me he concentrado en el problema actual, si como supongo siempre debes coger el valor inmediato superior al peso introducido en caso de no ser este uno de los existentes puedes crearte una función similar a esta:
Código Delphi [-]
function paLocate(Peso: String): String;
Var
   Query:TADOQuery//suponiendo que uses ado.
begin
   Query:= TADOQuery.Create(nil);
   Try
     Query.Connection :=ADOConnection1; //El conector que uses
     Query.SQL.Text := 'Select min(peso) from TuTabla where Peso >= '+Peso;
     Result := Query.Fields[0].asString;
   finally
     Query.Free
   end
end;

Fíjate que te va a devolver el primer valor que sea mayor que el que has pasado como parámetro y en caso de que el parámetro exista en la base de datos te debe devolver ese mismo valor.

Pues nada que el resultado de esa función es el que le debes pasar a tu locate
Código Delphi [-]
 var
   MyPeso:String;
 begin
   MyPeso := paLocate(Edit3.Text)
   DTMGesatrans.TTarifa.Locate('Peso',StrToInt(MyPeso ),[]);
 end;

Espero que esto te de alguna idea, ya comentarás como te fue.

Consejo: No tienes idea de la cantidad de quebraderos de cabeza que te puedes quitar con solo usar pequeñas inyecciones de SQL en tu sistema.

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 16-11-2006 a las 15:56:56.
Responder Con Cita
  #2  
Antiguo 16-11-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Gracias Yusnerqui,

he incorporado ese código al programa y me da este error (a parte de los ';' que faltaban y he ido colocando)

Indice de la lista fuera de rango(0)


¿Sabes a que puede ser debido?

al final creo que debo de ser gafe
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #3  
Antiguo 16-11-2006
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
jeje, no te preocupes que la culpa es toda mía, jejeje, es que me faltó ejecutar la consulta:

Código Delphi [-]
function paLocate(Peso: String): String;
Var
   Query:TADOQuery//suponiendo que uses ado.
begin
   Query:= TADOQuery.Create(nil);
   Try
     Query.Connection :=ADOConnection1; //El conector que uses
     Query.SQL.Text := 'Select min(peso) from TuTabla where Peso >= '+Peso;
     Query.Open;
     Result := Query.Fields[0].AsString;
   finally
     Query.Free
   end
end;
Te recuerdo que no va a funcionar así de flai, debes ajustarlo a los componentes que estás usando. Saludos.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #4  
Antiguo 17-11-2006
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Bueno y te sirvió o no la función???

Saludos Yusnerqui
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #5  
Antiguo 17-11-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Buenas Tardes,

no me ha servido o mejor dicho no le se sacar partido.

Pero me ha servido para pensar en otra forma para hacerlo y ahí ando, a ver si doy con ello de una vez.

Buen fin de semana y gracias de todos modos
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #6  
Antiguo 18-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por yusnerqui
creo que debes reconciderar el uso del SQL
Cita:
Empezado por Lepe
Pues al no usar sql te estas liando más todavía con código delphi
... y erre que erre con delphi...

El error que yo veo en este hilo, es que está construyendo su propia carretera, sin querer ver que hay otras autopistas desconocidas para él, pero que ya llevan al destino de una forma más rápida y fiable.

En mi caso, la tarifa depende de:
- el peso y tipo de portes a ese cliente (1 porte diario, 1 porte semanal, 2 semanales, 2 al més), dependiendo de ese tipo de porte, se aplica una tarifa distinta (es idéntico a tu problema de zonas)
- la tarifa del cliente que paga el albarán (remite o destinatario del paquete)
- Incluso se puede establecer un precio especial para un albarán, distinto de la tarifa que exista en la BBDD.

Solución que le dí en aquel momento:
Un simple Combobox. Cuando el usuario rellena todos los datos (remite, tipo de portes, kilos), se hace una consulta a la base de datos con sql y en el combobox se añaden 2 o 3 items del tipo:
14 kg 15.00 €
20 kg 19.30 €

(suponiendo que el peso del albarán es de 16 kg)

Al entrar el foco en el combo, se despliega la lista automáticamente, y el usuario solo tiene que elegirlo. El usuario ya sabe que el precio normal sería entre 15 y 19 € para ese albarán. Pero es libre de poner el precio que quiera (porque sea un porte "especial").

Cuando el usuario elige una tarifa de la lista, en el Combobox.Text solo aparece el precio, es decir sólo "19.30 €". Así al echar una ojeada al albarán completo vé:
- Portes (los 19.30 €)
etc... (otras cantidades que no puedo revelar)
- Base imponible
- xx % de iva
- Total del albarán

Simple, efectivo y cómodo.

... Y todo esto se ha tratado en el foro...

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 21-11-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola a todos
La verdad no entiendo que pasa con Delphitest , me preocupa que se llegue a desanimar, sin haber empezado.
Cuando se tiene un problema, normalmente se recurre a los amigos, hey hombre que aqui hay muchos, que pasa ,no entiendes algo , pues aqui te ayudamos, todo menos lo economico , tienes nuestra ayuda, hasta donde se pueda.
Este proyecto lo terminamos, porque lo terminamos, asi de claro, no se puede empezar algo y dejarlo a medias.
Entonces cuales son los nuevos avances. , esperamos por ti Delphitest.
Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar Query Paso a Paso??? juliopag1 SQL 0 17-06-2006 01:51:10
Novato (Paso a Paso de una consulta) enecumene Conexión con bases de datos 2 29-05-2006 20:52:19
Motor Paso a Paso jluisx C++ Builder 3 12-09-2005 16:48:07
Red Paradox paso a paso Aldo Josué Conexión con bases de datos 2 13-12-2003 13:53:37
procedure paso a paso Silver Varios 1 26-08-2003 20:24:00


La franja horaria es GMT +2. Ahora son las 16:09:25.


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