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 22-10-2010
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Buscar dato en TJvMemoryData

Hola

estube buscando en la web.. y no encontre ejemplos...

Tengo una duda con este compontente... lo utilizo bastante pero hay cierta funcion que nunca he realizado.. y es buscar un registro dentro del JvMemoryData....

La idea es que le estoy ingresando datos que son unicos... pero cuando los inserto me falta verificar que el dato no lo haya insertado antes.... generalmente realizo eso con Query.. pero con este componente no se como hacerlo... quisas puede ser con un locate.. pero no se como hacerlo....


Salu2
__________________
BlueSteel
Responder Con Cita
  #2  
Antiguo 23-10-2010
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 19
Young Va por buen camino
Yo utilizo lo siguiente cuando necesito hacer una búsqueda en los memory.

Código Delphi [-]
JvMemoryData.Locate( 'NombreCampo1;NombreCampo2', VarArrayOf(['Valor a buscar1', 69]), [] );

Los valores para el tercer son:

[loCaseInsensitive] búsqueda no sensible a mayúsculas.

[loPartialKey] búsqueda parcial.

[] este lo utilizo para búsqueda exacta

Se me olvidaba... el método devuelve un boleano, true para encontrado.

Saludos.
Responder Con Cita
  #3  
Antiguo 26-10-2010
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Ok... gracias...

ya lo hice funcionar.. y la sentencia que utilice fue la siguiente

Código Delphi [-]
// Datos : Form de tipo DataModule
// ItemsContrato : Componente JvMemoryData
// vAsi.Text : Edit, donde se ingresa un valor numerico

If Datos.ItemsContrato.Locate('Ite_Id',StrToInt(vAsi.Text),[]) Then
   // Sentencia 1
Else
  // Sentencia 2
End;

Salu2
__________________
BlueSteel
Responder Con Cita
  #4  
Antiguo 27-12-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
hola amigo BlueSteel, desde hace dias te sigo los paso por que usas el componente TjvMemoryData, oye amigo que posibilidad existe de que me puedas ayudar hacer una busqueda, soy nuevo con este componente.

ya intente con el codigo que pones pero creo que no enlaso algo o no se que pasa no muestra error pero no hace nada.

de antemano muchas gracias.
Responder Con Cita
  #5  
Antiguo 28-12-2010
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cita:
Empezado por microbiano Ver Mensaje
hola amigo BlueSteel, desde hace dias te sigo los paso por que usas el componente TjvMemoryData, oye amigo que posibilidad existe de que me puedas ayudar hacer una busqueda, soy nuevo con este componente.

ya intente con el codigo que pones pero creo que no enlaso algo o no se que pasa no muestra error pero no hace nada.

de antemano muchas gracias.

Hola Microbiano:

disculpa.. pero hace dias que no ingresaba.... Específicamente que necesitas..

Me voy a cambiar de PC y voy a dejar algunos ejemplos que utilizo con dicho componente...

Salu2
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 28-12-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
gracias

hola estimado amigo, necesitaba hacer una busqueda dentro de la tabla temporal, pero lo resolvi de la siguiente manera
Código Delphi [-]
If temporal.Locate('codigo',Self.wcodigobarras,[]) Then
, precisamentel un codigo que te pasaron, que te parece si mejor me das una idea de como modificar algun registros, pro que hasta ahora lo hago asi
Código Delphi [-]
procedure TFfactura.modifica_registro;
begin
 with Ffactura.temporal do
  begin
   Edit;
   //FieldByName('codigo').AsString :=Self.wcodigobarras;
   //FieldByname('descripcion').AsString := Self.wdescripcion;
   FieldByName('cantidad').AsFloat:=Self.wcantidad_venta;
   FieldByName('precio').AsCurrency:= Self.wprecio_venta;
   FieldByName('descuento').AsFloat:=Self.wdescuento_considerar;
   FieldByName('total').AsCurrency:= wcantidad_venta * wprecio_venta;
   Post;
  end;
   Self.txtcodigo.Text:='';
  Self.txtcodigo.SetFocus;  
end;

sin embargo no estoy muy seguro de que este bien, debido a que siempre he usado sql para este tipo de operaciones de antemano muchas gracias :-)

en cuanto a que no habias entrado me imagino me imagino vacaciones y a disfrutar la familia jejeje.
Responder Con Cita
  #7  
Antiguo 28-12-2010
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Ya...

Mira con dicho componente utilizo lo siguiente....

En el Evento FormCreate del Formulario donde estoy utilizando el componente pongo este codigo

Código Delphi [-]
Datos.ItemsContrato.Active := True; 
Datos.ItemsContrato.EmptyTable; 
Datos.ItemsContrato.Refresh; 
// Esto es para asegurarme de que no tenga basura...

Para Insertar un Registro realizo lo siguiente
Código Delphi [-]
Datos.ItemsContrato.Append; 
Datos.ItemsContrato.FieldByName('Ite_Id').AsString := Datos.AQ_Abono['Abo_Id']; 
Datos.ItemsContrato.FieldByname('Ite_Asiento').AsString := vAsi.Text; 
Datos.ItemsContrato.FieldByName('Ite_Sigla').AsString := Datos.AQ_ValorUbicacion['Ubi_Sigla']; 
Datos.ItemsContrato.FieldByName('Ite_Ubicacion').AsString := Datos.AQ_ValorUbicacion['Ubi_Detalle']; 
Datos.ItemsContrato.FieldByName('Ite_Valor').AsCurrency := Datos.AQ_ValorUbicacion['Tem_Valor']; 
Datos.ItemsContrato.Post;

Para buscar un registro que ya he ingresado, realizo esto

Código Delphi [-]
If Datos.ItemsContrato.Locate('Ite_Id',StrToInt(Datos.AQ_Abono['Abo_Id']),[]) Then    
Begin         
      ShowMessage('Ya existe un registro con dicho código----');         
      // Aqui solo limpio e ingreso otro codigo... esto es por que en mi sistema no se puede repetir un codigo (son asientos de un estadio numerados)
      vAsi.Clear;
      vAsi.SetFocus;
      Sw_1:=0;
End;

Para Eliminar un registro, utilizo lo siguiente (se supone que estoy posicionado en el registro a eliminar)

Código Delphi [-]
Try
    If MessageDlg('Seguro de borrar el Asiento '+#13+IntToStr(Datos.ItemsContrato['Ite_Asiento'])+' de '+Datos.ItemsContrato['Ite_Ubicacion'], mtConfirmation, [mbYes, mbNo], 0) = mrYes Then
       Begin
             sSub.AsCurrency := sTot.AsCurrency - Datos.ItemsContrato['Ite_Valor'];
             sTot.AsCurrency := sSub.AsCurrency;
             Datos.ItemsContrato.Delete;
             Sw_2 := Sw_2 - 1;
       End;
Except
       ShowMessage('No existen registros para eliminar');
End;

Solo mencionar lo siguiente....

Cuando en mi programa de factura ingreso un codigo que ya existe en la tabla de memoria, digo que ya existe y que si lo quiere modificar, entonces paso todos los datos del registro a variables, elimino el registro de la tabla temporal, traspaso los datos de las variables a las variables de ingreso de items... y me evito el actualizar un registro y hacer más engorroso el sistema.

Tambien te menciono que el componente lo tengo en otro formulario de tipo DataModule llamado "Datos".

Espero que esto te sirva...

Cita:
en cuanto a que no habias entrado me imagino vacaciones y a disfrutar la familia jejeje.
ojala ubiesen sido por vacaciones... mira que he tenido mucho trabajo....y de vacaciones ni hablar por estos dias, y quizas puedan ser el proximo año....

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 28-12-2010 a las 15:27:54. Razón: formato del codigo delphi
Responder Con Cita
  #8  
Antiguo 15-06-2011
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
sumar cantidades de articulos en un Label con el componente TJvMemoryData

Hola he seguido todos estos ejemplo y he quedado satisfecho con el componente TjvMemoryData sin embargo no he logrado que me sume la cantidad de articulos vendidos y ponerlo en un label. Saben Como hacerlo?


Saludos

novato_erick
Responder Con Cita
  #9  
Antiguo 15-06-2011
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Calcula totales

Código Delphi [-]
procedure TFfactura.calcula_totales;
var i,wregistros:integer;
begin
 //Calcula los totales de la factura
   SubTotal := 0;
   Impuesto := 0;
   Desc     := 0;
   Total    := 0;

   temporal.First;
   For i:= 1 to Self.temporal.RecordCount do
    begin
      SubTotal := SubTotal + temporal.fieldByname('total').AsFloat;
      temporal.Next;
    end;

    //Calcula el monto para cobrar el impuesto de ventas

     //For i:=1 to Ffactura.SGFact.RowCount-1 do
     //If Ffactura.SGFact.Cells[6,i] = 'Si' then Impuesto :=  Impuesto + StrToFloat(Ffactura.SGFact.Cells[5,i]);


   {SubTotal := Round(SubTotal);  aqui es donde redondea la cantidad total
   ok funciona al 100% ---Desc := Round(Desc);}
    Desc := (SubTotal * Ffactura.FLEPorcDesc.Value / 100);

   {saco el importe del iva}
    Impuesto:=subtotal*ffactura.txtiva.Value/100;

   Total := (SubTotal - Desc + Impuesto);
     Ffactura.wgrande_total:=Total;

    //escribe los valores en las celdas
    Ffactura.SGTotal.Cells[1,1] := Format('%8.2n',[desc]);
    Ffactura.SGTotal.Cells[1,2] := Format('%8.2n',[Impuesto]);
    Ffactura.SGTotal.Cells[1,0] := Format('%8.2n',[SubTotal]);
    Ffactura.SGTotal.Cells[1,3] := Format('%8.2n',[Total]);
end;

tendrias que adaptarlo a lo que necesitas, ESTO LO DEBERIAS HACER CADA QUE AGREGUES UN ITEM O AL FINAL

Última edición por microbiano fecha: 15-06-2011 a las 02:30:03. Razón: PARA COMPLEMENTAR
Responder Con Cita
  #10  
Antiguo 15-06-2011
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
sumar cantidades de articulos en un Label con el componente TJvMemoryData

Gracias microbiano por contestar:

solucionado la parte de sumatoria de totales.

Sin embargo es posible sumar los totales de el campo CANTIDAD ejemplo

*********************************************************
CODIGO----- DESCRIPCION-----------CANTIDAD -------DESC-----TOTAL
123456------PRODUC PRUEBA------------ 3 ------------0 ------- 5.00
654321------PRODUC PRUEBA2 ---------- 2 -------------0-------10.00
456789------PRODUC PRUEBA3 ---------- 3 ------------ 0 ------- 2.60
*********************************************************
TOTAL ARTICULOS 8----------------TOTAL 17.60


Saludos;
Responder Con Cita
  #11  
Antiguo 16-06-2011
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
For i:= 1 to Self.temporal.RecordCount do begin SubTotal := SubTotal + temporal.fieldByname('total').AsFloat;
cantidad := cantidad + temporal.fieldbyname('cantidad').Integer;
temporal.Next; end;

cantidad:= variable global

otra deberias intentar solucionar el problema, ya que aqui se te
echa la mano pero no se te resuelve usando logica creo que asi
quedaria.
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
buscar dato en preview quickreport + delphi jgutti Impresión 1 13-06-2007 20:13:22
buscar si existe el dato Max_E. Conexión con bases de datos 1 14-11-2006 11:25:09
Como buscar un dato desde un BDgrid.... Arturo Varios 3 18-08-2005 23:12:38
Buscar un dato en registro, leerlo y modificarlo escullar Varios 1 30-06-2005 19:36:35
buscar dato de una cadena noe SQL 5 10-02-2004 18:58:20


La franja horaria es GMT +2. Ahora son las 18:50:48.


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