Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Hola lepe... muy interesante y clara tu respuesta y muchas gracias por dármela.
Pero hay un problema. creo que me expliqué un poco mal o entendiste un poco mal.
la cosa va asi.. tu me das este código :

Código Delphi [-]
For i:=0 to  SGListaProductos.RowCount-1 Do
Begin
    DM.ZQActualizaListaPrecio.SQL.Add('UPDATE productos');
    DM.ZQActualizaListaPrecio.SQL.Add(' SET Precio = recio');
    DM.ZQActualizaListaPrecio.SQL.Add('Where CodProducto = :codigo');
    DM.ZQActualizaListaPrecio.ParamByName('precio').AsCurrency:= strToCur(Precio);
    DM.ZQActualizaListaPrecio.ParamByName('codigo').AsInteger  := StrToInt(SGListaProductos.Cells[3,i]);
DM.ZQActualizaListaPrecio.ExecSql; // ejecutamos la consulta.
end;

el cual con el UPDATE lo que haría escribir en mi base de datos y por el momento NO necesito eso.. creo que eso tendría que ir en la parte final cual el usuario precioa un botón, por ej: EJECUTAR o VENDER como sea y que descuente las cantidades ... osea osar ese pedaso de código para UPDATEAR las CANTIDADES no los precios.. por que para podificar los precios está otro Form donde también pueden modificar el nombre, código de barra, descripción, etc.

Bueno y lo que yo necesito solo es ACTUALIZAR la mi STRINGGRID con otros precios de mi TABLA

espero ahora haber podío ser mas claro.

AHora respecto al otro punto.. me parece una exelente idéa de hacer una nueva tabla para los precios.. por que me será mas fácil manejar ya que son 6 precios , ya suponiendo que tengo mi NUeva tabla TARIFAS y podría hacer lo que me dices.
Hacer un SELECT peroooooooo lo que no entiendo es que como hacer para saber el código del producto.. osea buscar el el producto que está en el StringGrid luego hacer el select, escojer el nuevo precio de acuerdo al COmboBox y reemplazar al que está en el StringGrid, eso hacer para toda la lista del StringGrid supongo que es con un bucle pero no me doy idea de como mesclar las 2 consultas.. me refiero a una BUSCA PRODUCTO POR CODIGO , una ves encontrado BUSCA PRECIO DE ACUERDO AL COMBOBOX, una ves que tengo el nuevo precio REEMPLAZARLO AL PRECIO QUE TENGO EN EL STRINGGRID

Bueno por el momento estaré haciendo la nueva tabla con los precios

saludos y gracias Lepe tus respuestas siempre me ayudan

salud!!
Responder Con Cita
  #2  
Antiguo 21-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
En el stringGrid tienes la columna 3 con el código del producto. Teniendo la tabla tarifas, te sale más fácil, ya que en esa tabla tienes el código del producto y el tipo de tarifa:

Código Delphi [-]
    DM.ZQActualizaListaPrecio.Close;
    DM.ZQActualizaListaPrecio.SQL.Clear;
    DM.ZQActualizaListaPrecio.SQL.Add('SELECT precio FROM Tarifas');
    DM.ZQActualizaListaPrecio.SQL.Add('Where CodProducto = :codigo');
    DM.ZQActualizaListaPrecio.SQL.Add('and Tipo_Tarifa = :Tarifa');
    DM.ZQActualizaListaPrecio.prepare;

with DM.ZQActualizaListaPrecio DO
For i:=0 to  SGListaProductos.RowCount-1 Do
Begin
  ParamByName('codigo').AsInteger  := StrToInt(SGListaProductos.Cells[3,i]);
  ParamByName('Tarifa').AsString = combobox1.items[combobox1.Itemindex];
  Open; // abrimos la consulta
   if not IsEmpty then

      SGListaProductos.Cells[7,i] := Fieldbyname('Precio').AsString; 
  //solo debería existir un registro para esta tarifa y este producto.
   else
   begin
     ShowMessage('No existe El tipo de tarifa para el producto' + StrToInt(SGListaProductos.Cells[3,i]));
     SGListaProductos.Cells[7,i] := '<< Error >>';
  end;  
  Close; // cerramos la consulta para la próxima iteración del bucle.   
End;

Edito:
Como ahora el usuario es el que creará los "tipos de tarifas", en el combobox1 (el combo de precios) tendrás que cargarlo dinámicamente, por ejemplo al crear la ventana, usando un TZQuery convenientemente preparado:
Código SQL [-]
 select distinct Tipo_Tarifa from Tarifas
y ya en el Oncreate de la ventana:
Código Delphi [-]
qryTiposTarifas.Open;
Combobox1.items.Clear;
qryTiposTarifas.DisableControls; // agilizar las iteraciones por la consulta.
combobox1.items.BeginUpdate;  // agilizar las adiciones al combo.
while not qryTiposTarifas.eof do
begin
  Combobox1.Items.Add(qrytiposTarifas.Fields[0].AsString;
  qryTiposTarifas.Next;
end;

qryTiposTarifas.Close;
qryTiposTarifas.EnableControls; // dejar las cosas como estaban.
combobox1.Items.EndUpdate;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 21-03-2007 a las 18:02:59.
Responder Con Cita
  #3  
Antiguo 21-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
jojojo ahora si creo que esto es lo que necesitaba Lepe

bueno en este mismo momento estoy probando el código
de 10 minutos te digo el resultado.. se que este post no tiene sentido pero te agradesco por tu respuesta

saludos pues !!
Responder Con Cita
  #4  
Antiguo 22-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Bueno pues.. he estado toda la tarde en esto y lo que avancé fue hacer la tabla respectiva para los precios.. ya que manejan 6 precios distintos hice mi tabla de esta manera.. agregué un campo para Código de Barras.. por que con el tiempo creo que se manejarán así todo.

TABLA DE TARIFAS

Código SQL [-]
CREATE TABLE `tarifas` (
  `CodigoBarra` varchar(20) NOT NULL,
  `CodProducto` varchar(20) NOT NULL,
  `TipoTarifa` varchar(20) NOT NULL,
  `Precio` double NOT NULL,
  KEY `CodigoBarra` (`CodigoBarra`),
  KEY `CodProducto` (`CodProducto`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Bueno una ves creeada la tabla tuve que modificar la parte de AGREGAR PRODUCTOS .. donde antes ahí se ponían los precios y era con una simple tabla de conectar unos DBEdits a cada campo de la tabla PRODUCTOS.. los DBEdits correspondían a cada precio.. osea eran 6.
Ahora.. los precios los agrego de esta forma..
A mi parecer esta una chapucera.. por que soy nuevo en esto pero me andá bién y eso me hace sentir bién.. pero creo que se podría mejorar..
Aquí les dejo el código del botón que agrega los los precios en la nueva TABLA

Código Delphi [-]
procedure TFrmAgregarProductos.SBGuardarClick(Sender: TObject);
begin
with DM.ZQPrecios do
begin
  Close;
  SQL.Clear;

  SQL.Add('INSERT INTO `tarifas` ( `CodigoBarra` , `CodProducto` , `TipoTarifa` , `Precio` )');
  SQL.Add('VALUES (:CB, :CP, :TT1, :P1), ');
  SQL.Add('(:CB, :CP, :TT2, :P2), ');
  SQL.Add('(:CB, :CP, :TT3, :P3), ');
  SQL.Add('(:CB, :CP, :TT4, :P4), ');
  SQL.Add('(:CB, :CP, :TT5, :P5), ');
  SQL.Add('(:CB, :CP, :TT6, :P6)');

  // Si, asignamos los parámetros xDD
  ParamByName('CB').AsString := ECodigoBarra.Text;
  ParamByName('CP').AsString := ECodProducto.Text;
  ParamByName('TT1').AsString := 'Precio1';
  ParamByName('TT2').AsString := 'Precio2';
  ParamByName('TT3').AsString := 'Precio3';
  ParamByName('TT4').AsString := 'Precio4';
  ParamByName('TT5').AsString := 'Precio5';
  ParamByName('TT6').AsString := 'Precio6';

  ParamByName('P1').AsString := EPrecio1.Text;
  ParamByName('P2').AsString := EPrecio2.Text;
  ParamByName('P3').AsString := EPrecio3.Text;
  ParamByName('P4').AsString := EPrecio4.Text;
  ParamByName('P5').AsString := EPrecio5.Text;
  ParamByName('P6').AsString := EPrecio6.Text;
  // Ejecutamos e insertamos todos los valores asignados
  ExecSQL;

end;

  DM.ZTAlmacen.Post; -->  Este agrega las demas descripciones pero a la tabla PRODUCTOS.. lo de arriba a la nueva tabla TARIFAS

end;

Bueno.. esa parte ya la arreglé con eso.. PERO tengo unas dudas ahora.. cuando se realize una búqueda de un producto y quiero que me lo muestre en un DBGrid como lo tendría que hacer ?? por ej

Código SQL [-]
SELECT * FROM productos WHERE codproducto = :codigo

Bueno en primer lugar no tendré para hacer búsquedas por Código de producto ni por Codigo de barras.. por que ya esos datos los guardo en otra tabla.. ahora podría buscar por CATEGORIA o DESCRIPCION del produto.. peroooo ya no me mostraría el codigo de barras, código de producto NI los precios :S por que estarán en otra tabla.
Y si realizo la búsqueda en la tabla TARIFAS, ahí podré buscar por códigos pero tampoco me mostrarán las descripciones ni las cantidades disponibles que eso se guarda en la TABLA productos.. en fin son dudas que tengo y que con eso ya se fregó gran parte de mi programa.. pero si es por el BIEN estoy de acuerdo en solucionar esas partes ... de las búsquedas etc.
o para hacer las búsquedas tendría que llamar a las 2 TABLAS ?? a la PRODUCTOS y TARIFAS ?? como sería eso son SQL ?

Código SQL [-]
SELECT * FROM productos, tarifas

si es así no habrá problemas..

Ahora seguiré probando el código para actualizar toda la fila de PRECIOS

pero hasta el momento como voy ?? está bién lo que hago ??

ahh una cosa mas.. que he estado pensando cuando uno agrega un producto indicas que si es Und, Pza, Doc == Unidad, Pieza, Docena
bueno eso donde cumple su función sería a la hora de agregar los produtos al StringGrid verdad ?? si es Docena pues multiplicar el precio de la Unidad por 12 supongo.. pero creo que mes estoy pasando a otro punto, pero igual quería saber por si puedo hacer algo ahora o eso luego.

bueno saludos

salud!!

Última edición por BlackDaemon fecha: 22-03-2007 a las 01:56:53.
Responder Con Cita
  #5  
Antiguo 22-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Bueno pues el motivo de este post es el siguiente.. dejando aparte el anterior problema .. que ya estoy por sulicionarlo pero al solucionar ese surgieron muchos problemas mas.. bueno para mi
el primero es este.

http://img301.imageshack.us/img301/8...oductosfu0.jpg

como podrán ver antes usaba esos DBEdits que estaban enlasados a cada campo de mi TABLA PRODUCTOS pero ahora agregué esos Edits normales para hacer la inserción de los precios en la tabla nueva TARIFAS.. que lo hago sin problemas.. pero antes cuando hacian clic en el botón NET o PRIOR, LAST, etc.. este recorria la TTable y se visualizaban en los DBEdits para así poder EDITAR o ELIMINAR.. pero ahora como los EDITS normales no están enlasados a ninguna TABLA no es posible hacer eso.. y quedan con el TEXTO que se le escribe la primera vés que uno hace un registro..
además que cuando elimino con TTable.delete; no me borrará de la tabla TARIFAS los precios correspondientes a esa descripción..ya que no estarán en la mis TABLA.. bueno es un problema grave para mi por que no se como resolverlo.. y si no lo resulevo eso no puedo pasar el otro punto de mi problema que es el primer post de este tema.

Aquí les pongo el código con el que registraba un nuevo producto.

Código Delphi [-]
procedure TFrmAgregarProductos.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  FrmAgregarProductos := nil;
  Action := caFree;
  FrmAgregarProductos.Free;
end;

procedure TFrmAgregarProductos.SBNuevoClick(Sender: TObject);
begin
  modoEditar(True);
  DM.ZTAlmacen.Append;
  DBECodigoProducto.SetFocus;
  DateTimePicker1.DateTime := Now;
  DateTimePicker1.BringToFront;
end;

procedure TFrmAgregarProductos.SBEditarClick(Sender: TObject);
begin
  DM.ZTAlmacen.Edit;
  modoEditar(True);
  DBECodigoProducto.SetFocus;
end;

procedure TFrmAgregarProductos.SBGuardarClick(Sender: TObject);
begin
  with DM.ZQTarifas do
  begin
    Close;
    SQL.Clear;
    SQL.Add('INSERT INTO `tarifas` ( `CodigoBarra` , `CodProducto` , `TipoTarifa` , `Precio` )');
    SQL.Add('VALUES (:CB, :CP, :TT1, :P1), ');
    SQL.Add('(:CB, :CP, :TT2, :P2), ');
    SQL.Add('(:CB, :CP, :TT3, :P3), ');
    SQL.Add('(:CB, :CP, :TT4, :P4), ');
    SQL.Add('(:CB, :CP, :TT5, :P5), ');
    SQL.Add('(:CB, :CP, :TT6, :P6)');

    // Si, asignamos los parámetros xDD
    ParamByName('CB').AsString := ECodigoBarra.Text;
    ParamByName('CP').AsString := ECodProducto.Text;
    ParamByName('TT1').AsString := 'Precio1';
    ParamByName('TT2').AsString := 'Precio2';
    ParamByName('TT3').AsString := 'Precio3';
    ParamByName('TT4').AsString := 'Precio4';
    ParamByName('TT5').AsString := 'Precio5';
    ParamByName('TT6').AsString := 'Precio6';

    ParamByName('P1').AsString := EPrecio1.Text;
    ParamByName('P2').AsString := EPrecio2.Text;
    ParamByName('P3').AsString := EPrecio3.Text;
    ParamByName('P4').AsString := EPrecio4.Text;
    ParamByName('P5').AsString := EPrecio5.Text;
    ParamByName('P6').AsString := EPrecio6.Text;
    // Ejecutamos e insertamos todos los valores asignados
    ExecSQL;

  end;
  DM.ZTAlmacen.FieldByName('FechaActualizacion').AsDateTime := DateTimePicker1.Date;
  DM.ZTAlmacen.Post;
  ModoEditar(False);
end;

procedure TFrmAgregarProductos.SBEliminarClick(Sender: TObject);
var
  resp : Integer;
begin
  if Editando then begin
    DM.ZTAlmacen.Cancel;
    modoEditar(False);
  end
  else begin
    resp := Application.MessageBox(Pchar('¿Desea eliminar el código '+DBECodigoProducto.Text+'?'),'Eliminar un registro',MB_YESNO+MB_ICONERROR);
    if resp = ID_YES then begin
      DM.ZTAlmacen.Delete;
      modoEditar(False);
    end;
  end;
end;

procedure TFrmAgregarProductos.FormShow(Sender: TObject);
begin
  try
    DM.ZTUnidad.Active := True;
    DM.ZTUnidadPrecio.Active := True;
    DM.ZTAlmacen.Active := True;
    DM.ZTProveedores.Active := True;
    DM.ZTCategorias.Active := True;
    DM.ZTSubCategorias.Active := True;
  except
    Application.MessageBox(Pchar('Error de conexión a la base de datos:'+#13+#13+'Verifique si la ruta es correcta'),'Error de conexión',MB_ICONWARNING);
    Application.Terminate;
  end;
  ModoEditar(False);
end;

procedure TFrmAgregarProductos.SBPrimeroClick(Sender: TObject);
begin
  DM.ZTAlmacen.First;
end;

procedure TFrmAgregarProductos.SBAnteriorClick(Sender: TObject);
begin
  DM.ZTAlmacen.Prior;
end;

procedure TFrmAgregarProductos.SBSiguienteClick(Sender: TObject);
begin
  DM.ZTAlmacen.Next;
end;

procedure TFrmAgregarProductos.SBUltimoClick(Sender: TObject);
begin
  DM.ZTAlmacen.Last;
end;

procedure TFrmAgregarProductos.DBEPrecio1KeyPress(Sender: TObject;
  var Key: Char);
var precio : Integer;
begin
  if Key = #13 then begin
    Key := #0; //quitamos el sonido
    precio := (StrToInt(DBEPrecio1.Text) * 16 Div 100 + StrToInt(DBEPrecio1.Text));
    DBEPrecio2.Text := IntToStr(precio);
    precio := (StrToInt(DBEPrecio1.Text) * 25 Div 100 + StrToInt(DBEPrecio1.Text));
    DBEPrecio3.Text := IntToStr(precio);
    precio := (StrToInt(DBEPrecio1.Text) * 35 Div 100 + StrToInt(DBEPrecio1.Text));
    DBEPrecio4.Text := IntToStr(precio);
    precio := (StrToInt(DBEPrecio1.Text) * 40 Div 100 + StrToInt(DBEPrecio1.Text));
    DBEPrecio5.Text := IntToStr(precio);
    precio := (StrToInt(DBEPrecio1.Text) * 8 Div 100 + StrToInt(DBEPrecio1.Text));
    DBEPrecio6.Text := IntToStr(precio);

  end;
end;

end.


Disculpen por poner un código tan largo.. pero espero así ser lo mas claro posible

cual sería la solución para este caso ?? ( pueden ver la imagen para tener una idea mas clara )

Bueno.. creo que son esas todas mis dudas tontas que tengo y no puedo resolverlas solo

Bueno pues según yo tendré que hacerlo TODO con SQL no ??? ya no usaré una TTabla para eso verdad ?

Saludos y gracias por leeme.

Última edición por BlackDaemon fecha: 22-03-2007 a las 03:58:53.
Responder Con Cita
  #6  
Antiguo 22-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Antes de nada te recomiendo un manual de sql, avanzarás más rápido, éste es uno de tantos, pero busca un poco, los hay de todo tipo.

Lo de borrar un producto y que se borren las tarifas, se llama integridad referencial, en el caso de mysql no sé la respuesta, pero básicamente hay que decirle a la base de datos que el campo CodProductos de la tabla tarifas es una clave ajena (foreign key) de la tabla productos, y en caso de borrado de un producto, se borre todos las filas de ese producto en la tabla tarifas (ON DELETE CASCADE). Aqui viene

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 22-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Gracias Lepe y si, si tengo un manual de SQL a mano siempre que necesito algo.. pero como esto de integridad referenciál no sabía osea que no tenía idea de como buscar.. gracias por darte la molestia de ponerme los link .. en este momento estoy en el trabajo, cuando llegue a casa lo probaré y luego comento que pasó y seguro que tendré otro problema..

gracias

salud!!
Responder Con Cita
  #8  
Antiguo 10-04-2007
d-hugo d-hugo is offline
Miembro
 
Registrado: abr 2007
Posts: 34
Poder: 0
d-hugo Va por buen camino
Algunas observaciones (disculpa el atrevimiento):
Para dinero en lugar de utilizar un campo FLOAT usa NUMERIC que guarda un valor exacto, el float redondea cada vez que se usa por lo que usarlo para dinero no es recomendable.
Ten presente que si borras un producto, proveedor, cliente o cualquier otro nomenclador que hayas usado en documentos comerciales, perderás el historial. En el lugar donde trabajo esto es inaceptable, por lo que yo suelo usar un campo boolean para definir si el nomenclador está activo o no.
No veo el objetivo de tener 6 precios en la base de datos si 5 siempre se van a calcular de la misma manera a partir del primero. Bien puedes calcular los valores en el momento en que vayas a mostrarlos en el formulario. Pero bueno, si vas a usar la tabla de precios, por qué mejor no usar solo el foreign key a id_producto y así no solo te ahorras ambos códigos, sino que puedes realizar joins y mostrar los campos que quieras?
Otra cosa es que en vez de usar un stringgrid quizás sería mejor usar un clientdataset para así poder hacer updates más comodamente, creo que de hecho te simplificaría más las cosas porque podrías usar controles db-aware y usar instrucciones SQL que son más sencillas.
En fin, suerte.
Responder Con Cita
  #9  
Antiguo 10-04-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Hola gracias por los consejos, me servirán de mucho y tendré muy en cuenta sobre los precios, pues no lo sabía, ahora sobre los precios ya lo he discutido con mi jefe, yo quiería hacer así, tener un precios _base_ y a este asignarle 6 porcentajes diferentes para calcular el resto de los precios al momento de ponerlos al StringGrid Por ej, pero bueno jeje hay que hacer caso a los jafes y mas aún siendo este mi primer jefe xD
Ahora ya lo tengo todo listo.. he echo todo una chapucera, pero funciona
ahora mismo son las 3:00 am en mi País y mañana pienso poner el código para que a alguien mas le sirva, aunque es mucho pero igual xD

saludos d-hugo

PD ahh es que ya tengo casi todo en mi stringGrind, sería como comenzar casi de nuevo con lo mucho que me esta costando
Responder Con Cita
  #10  
Antiguo 10-04-2007
d-hugo d-hugo is offline
Miembro
 
Registrado: abr 2007
Posts: 34
Poder: 0
d-hugo Va por buen camino
Cita:
Empezado por BlackDaemon
ahh es que ya tengo casi todo en mi stringGrind, sería como comenzar casi de nuevo con lo mucho que me esta costando
Sí, ese es el inconveniente, especialmente si tienes la aplicación muy adelantada. En todo caso bien puedes probarlo en un formulario que aun no hayas hecho, o cuando termines puedes hacer un proyecto de prueba a ver si usar clientdatasets te resulta mas simple.

Última edición por d-hugo fecha: 10-04-2007 a las 10:52:50.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar Archivos Desde FTP papu24ar Varios 4 21-03-2007 03:50:57
Actualizar una base de datos desde un servidor remoto zvf MySQL 1 22-06-2006 22:21:26
Actualizar una base de datos desde un formulario federiconqn21 Varios 1 14-12-2005 16:43:23
Impresión desde un StringGrid... Lester Impresión 10 26-03-2005 07:14:29
Impresion desde un StringGrid fmonte Varios 3 17-09-2004 05:28:29


La franja horaria es GMT +2. Ahora son las 14:08:10.


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