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 06-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
AzidRain, tenes razon en tus palabras, pero quisiera dejar mas claro de como es la situacion, he solicitado en varias ocaciones ayuda para realizar algo, mostrando lo que hice y corrigiendome en lo que estaba mal o mal encaminado, de hecho antes de llegar a este punto abri este tread para encontrar la solucion que necesito http://www.clubdelphi.com/foros/showthread.php?t=83824 si esto lo hubiese visto en clases, seguramente revisaria la carpeta y lo resolveria.
Como lo mencione anteriormente no voy a vivir de esto(lamentablemente), esto no es un titulo universitario, seguramente si me presentara a una postulacion de trabajo con mi edad, tendria un centenar de jovenes mejor preparados primero que yo.
Lo mas cercano a desarrollar un sistema, seguramente sera este, tambien tengas razon con lo del tiempo y no haberle dedicado mas, pero cuando uno trabaja todo el dia, a la noche va a estudiar y el fin de semana, uno tiene que poner en la balanza, entre quedarce a estudiar o salir con la familia al cine o a comer, cada uno vera lo que mas le pesa. No es vagancia, doy todo lo que puedo dentro de mi magro conocimiento.
Seguramente como decis esto no es un buen ejemplo, para quien este estudiando, tambien pude haber mentido y disfrazar este pedido de otra manera, opte por la verdad. Quien este estudiando y haga trampas, solo se engaña a si mismo, si quiere realmente lo que hace, debe poner lo mejor. Esto lo tome como un hobby, pero con muchas ganas de aprender y de seguir formandome, pero yo nunca me engañe, se a lo que puedo llegar.
No quiero crear una polemica, sino creamos un nuevo thread, agradesco muchisimo a caral y a todo aquel que alguna vez me ayudo, incluso a casimiro que siempre me recuerda que lea la cara oculta de Delphi.
Gracias.
Responder Con Cita
  #2  
Antiguo 06-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
No creo que AzidRain te guizgue, me parece que lo dice en general.
Yo en lo personal te entiendo perfectamente, tal vez la edad nos de esa visión.
De todos modos ya sabes, aqui siempre estamos para tratar de ayudar amigo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 18-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Bueno la otra materia (Visual C#) aprobe con 9, esta quedara para diciembre, asi que si quieren seguir ayudandome, les cuento como sigue esto.
con el siguiente codigo y la ayuda de ozswizzard casi funciona, osea realiza lo que quiero pero lo almacena todo de forma temporal, cuando salgo se borra todo.
Código Delphi [-]
procedure TForm14.BitBtn1Click(Sender: TObject);  // copia una factura a la otra 
begin
 with Query1 do 
begin
         Close;
         SQL.Clear;
    SQL.Add('INSERT INTO detfacturafinal');
    SQL.Add('SELECT * FROM detfactura');
    ExecSQL;
 end;
 end;
  procedure TForm14.SpeedButton3Click(Sender: TObject);//limpia la tabla detfactura
 begin
 with Query1 do
 begin
   Close;
   SQL.Clear;
   SQL.Add('DELETE FROM detfactura');
   ExecSQL;
 end;
 end;
Asi que me acosnsejo esto
Código Delphi [-]
procedure TForm14.BitBtn1Click(Sender: TObject);  // copia una factura a la otra
 begin
    Database1.StartTransaction;
    try
       with Query1 do
       begin
               Close;
               SQL.Clear;
          SQL.Add('INSERT INTO detfacturafinal');
          SQL.Add('SELECT * FROM detfactura');
          ExecSQL;
       end;
       DataBase1.Commit;
    except
                   on E:Exception do 
begin
          DataBase1.Rollback;
                   MessageDlg('Error:' + E.Message, mtError, [mbOK], 0);
       end;
    end;
 end;
  procedure TForm14.SpeedButton3Click(Sender: TObject);//limpia la tabla detfactura
 begin
    Database1.StartTransaction;
    try
       with Query1 do
       begin
          Close;
          SQL.Clear;
          SQL.Add('DELETE FROM detfactura');
          ExecSQL;
       end;
       DataBase1.Commit;
    except
             on E:Exception do
 begin          
DataBase1.Rollback;                   
MessageDlg('Error:' + E.Message, mtError, [mbOK], 0);
       end;
    end;
 end;
El asunto como le mencione nunca habia utilizado un Tdatabase, asi que buscando llegue a colocar un Tdatabase en el formulario y lo configure de la siguiente manera en el DataBase Editor:
Name: Facturacion
Alias name: ArgOs
Parameter overrides:
PATH=C:\ITM\Tablas
ENABLE BCD=FALSE
DEFAULT DRIVER=PARADOX

En las propiedades
AliasName ArgOs
connected False
DatabaseName Facturacion //el nombre inventado

El Database ArgOs lo cree con estas caracteristicas
type STANDAR
defaul driver PARADOX
enable BCD FALSE
path C:\tablas

las tablas y el Query
DatabaseName Facturacion



Ahora cuando lo hago correr me tira el siguiente error:
Database1: the transaction isolation level be dirty read local databases...
a ver si logran identificar que estoy haciendo mal o me falta hacer. gracias.

Última edición por DOS fecha: 18-08-2013 a las 03:41:31.
Responder Con Cita
  #4  
Antiguo 18-08-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Creo que usas paradox y componentes dbe, sera que estos componentes no tienen el comit ?.
No lo se.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 18-08-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 23
ozsWizzard Va por buen camino
Yo he usado paradox con BDE y el commit funcionaba.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #6  
Antiguo 18-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Creo que el error pasa por la configuracion de mi Database y no por el codigo, ozsWizzard vez algo en lo que puse de mi configuracion que creas que este mal o me falte hacer, para ver si esta correcto, gracias.
Responder Con Cita
  #7  
Antiguo 18-08-2013
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Volvi a el codigo que mas se acerco a la solucion
DOBLE CLICK EN EL DBGRID
Código Delphi [-]
// Doble click para la carga de productos y servicios
procedure TForm14.DBGrid2DblClick(Sender: TObject);
Begin
if (Edit6.Text) = ''then
  begin
  Application.MessageBox('Ingrese el Numero de Factura'+ #13 +'Luego cargue los Items'+ #13 +'Finalmente pulse Nueva Factura','¡ATENCION!',Mb_OK + Mb_IconWarning);
  end
else
begin
Table2.Filtered := False;
Table2.Close;
Table2.Open;
Table7.Open;  // nuevo
Table7.Last;    // nuevo
Table7.Insert;  // nuevo
Table7.Edit;
if combobox1.Text = 'Productos' then
  begin
   datasource5.DataSet:= Table4;  // tabla de productos
   Table2.Insert; // inserta un campo
   Table2Cod_prodser.Value:= Table4Cod_prod.Value; // el campo cod_prod de la tabla nueva es igual al de la tabla5
   Table2Codigo.Value:= Table4Codigo.Value;
   Table2Descripcion.Value:= Table4Descripcion.Value;
   Table2Importunidad.Value:= Table4ImpVent.Value;
   Table2Cantidad.Value:= StrToFloat(Edit1.Text);  //cantidad cargada por el usuario
   Table2TotalImp.Value:=Table2Cantidad.Value * Table2Importunidad.Value;   // multiplica la cantidad por el valor unitario
   Table2ID_Factura.Value:= StrToInt(Edit6.Text); // Nº de facturar del usuario
   Table2.Post; // guarda el dato en la tabla nueva.
   end;
  if combobox1.Text = 'Servicios' then
  begin
  datasource3.DataSet:= Table3;  // tabla servicios
   Table2.Insert; // inserta un campo
   Table2Cod_prodser.Value:= Table5Cod_servcio.Value; // el campo cod_servicio de la tabla nueva es igual al de la tabla3
   Table2Codigo.Value:= Table5Codigo.Value;
   Table2Descripcion.Value:= Table5Servicio.Value;
   Table2Cantidad.Value:= StrToFloat(Edit1.Text);  // cantidad cargada por el usuario
   Table2Importunidad.Value:= Table5ImpServ.Value;
   Table2TotalImp.Value:=Table2Cantidad.Value * Table2Importunidad.Value;
   Table2ID_Factura.Value:= StrToInt(Edit6.Text); // Nº de facturar del usuario
   Table2.Post; // guarda el dato en la tabla nueva.
   end;
  calcula;
end;
end;

BOTON NUEVA FACTURA
Código Delphi [-]
procedure TForm14.BitBtn1Click(Sender: TObject);  // nueva factura,
begin
if Table2.IsEmpty then
Application.MessageBox('Ingrese Nº de Factura'+ #13 +'Cargue los Items a Facturar'+ #13 +'Finalmente pulse Nueva Factura','¡ATENCION!',Mb_OK + Mb_IconWarning);
with Query1 do
begin
   Close;
   SQL.Clear;
   SQL.Add('INSERT INTO detfacturafinal');
   SQL.Add('SELECT * FROM detfactura');
   ExecSQL;
end;
end;

BOTON GUARDAR
Código Delphi [-]
procedure TForm14.SpeedButton4Click(Sender: TObject);
begin
Table7.Edit;
Table7.Post;
Table7.Refresh;
end;

BOTON LIMPIAR LA TABLA TEMPORAL
Código Delphi [-]
procedure TForm14.SpeedButton3Click(Sender: TObject);
begin
with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add('DELETE FROM detfactura');
  ExecSQL;
end;
Edit6.Text:='';
Table2.Refresh;
Table7.Refresh;
end;

Esta casi funcionando, puedo cargar la factura, guardarla, limpiar el DBGrid Y si intento cargar una nueva factura ahi salta el error EDBEngineError with message 'key violation'. ...
a mi me parece como que ademas de guardar inserta una linea nueva en blanco, asi que cuando pongo nuevamente, nueva factura salta el error.
Creo que me estoy equivocando con los edit, insert, post, close, etc en las distintas parte del codigo, alguno no esta bien ubicado, a ver si ustedes logran darse cuenta.
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
Copiar registro de una Tabla a otra Tabla, sin repetirse MaMu Conexión con bases de datos 22 11-04-2013 15:29:11
Mysql: copiar los campos de una tabla de una base de datos a otra tabla de otra base? patriram MySQL 4 02-11-2007 16:00:24
copiar datos de una tabla en otra fedelphi Firebird e Interbase 6 24-08-2007 03:59:36
Copiar un registro de una tabla en otra... JuanErasmo SQL 6 10-07-2007 23:08:15
Copiar Tabla de una BD a Otra BD en Firebird pcicom SQL 3 14-02-2005 16:31:15


La franja horaria es GMT +2. Ahora son las 05:58:26.


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