Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error ´no corresponding master record found´ (https://www.clubdelphi.com/foros/showthread.php?t=88447)

alexglez1255 08-06-2015 03:20:35

Error ´no corresponding master record found´
 
Cuando doy un Applyupdates(0) en datasets anidados me aparece este error....alguien sabe por que..?
el codigo es el siguiente


Código Delphi [-]
  With logicanegocio do

   If cdsArticContUnClienteCANTIDAD.Value>0 then
     begin
      cdsArticContUnClienteCOD_ARTICULO.AsInteger:=CDSListalmaCOD_ARTICULO.AsInteger;
      cdsArticContUnClientePRECIO.Value:=CDSListalmaPRECIO_VENTA.Value;
      cdsArticContUnClienteDESCRIPCION_ARTICULO.Value:=CDSListAlmaDESCRIPCION.Value;
      cdsArticContUnClienteCOD_VENDEDOR.Value:=cdsContratUnClienteCOD_VENDEDOR.Value;
      cdsArticContUnClienteCAPTURISTA.Value:=CDSdatosempresaUSUARIOACCESO.Value;
      cdsArticContUnClienteIDCAPTURISTA.Value:=CDSdatosempresaIDUSUARIO.Value;
      If (cdsArticContUnCliente.Modified) then
       begin
        cdsArticContUnCliente.ApplyUpdates(0);
        modulodatos.IBTransaction1.Active:=true;
        modulodatos.IBTransaction1.commit;
       end
       Else ShowMessage('Nada que gravar ');
     end  // end if si se hizo algun cambio
    Else begin
      ShowMessage('debe introducir la cantidad ');
      DBedit4.SetFocus;
      end; // End if si la cantidad es >0

Esta tabla es detalle de otra tabla llamada contratos y en esta tabla pongo los articulos de venta del contrato...sin embargo creo que no he definido esa relacion en delphi aunque ya lo hice en el ibexpert no se como hacerlo en el Delphi y creoo que por alli esta el problema...GRACIAS POR SU GRAN AYUDA..Y QUE MI DIOS LOS BENDIGA..POR SU LABOR ALTRUISTA...

ecfisa 08-06-2015 08:15:12

Hola alexglez1255.

Algunos datos que van a servirnos para ayudarte:
  • ¿ Que componentes estas usando para la conexión, IBX, DBExpress, ... ?
  • ¿ Cuales son las tablas y los campos por los cuales has establecido la relación master/detail ?
  • Cuando guardas los datos de la tabla detalle, ¿ Dispones del valor de la tabla maestro que establece la relación ?

Saludos :)

alexglez1255 08-06-2015 14:07:09

1.-Uso interbase
2.-en ibexpert la tabla contratos y articuloscontrato son master y detalle por el campo cod_contrato
3.-Al guardar el detalle (articuloscontrato) me da el error mencionado..trate de establecer en el Dataset el MasterSource Pero me dice que no esta permitido en Datasets anidados, ya que para las altas uso campos anidados...
me explico ..? trate de hacer o que dice el manual de la cara oculta de delphi ...

Relaciones maestro/detalles

Para establecer una relación master/detail entre dos conjuntos de datos sólo hay que
hacer cambios en el que va a funcionar como conjunto de datos dependiente. En el
caso de TClientDataSet, las propiedades que hay que modificar son las siguientes:
Propiedad Propósito
MasterSource Un datasource asociado a la tabla maestra
IndexName ó IndexFieldNames Criterio de ordenación en la tabla dependiente
MasterFields Campos de la tabla maestra que forman la relación
Es necesario configurar una de las propiedades IndexName ó IndexFieldNames; ya
hemos visto que son modos alternativos y excluyentes de establecer un orden sobre
los registros del conjunto de datos. Este criterio de ordenación es el que se aprovecha
para restringir eficientemente el cursor sobre los detalles. En el ejemplo que mostramos antes, los pedidos deben estar ordenados por la columna Cliente.

ecfisa 08-06-2015 19:59:58

Hola alexglez1255.

Te faltó especificar los componentes de conexión.

Unos enlaces que explican como establecer la relación master/detail con diferentes componentes :
Saludos :)

alexglez1255 09-06-2015 00:58:02

Gracias eicfsa voy a revisar toda esa informacion para ver si encuentro el error

alexglez1255 09-06-2015 15:54:56

ecfisa, ya tengo las tres tablas de campos anidados, correctamente acomodadas como master y detail..pero ahora me sale el
error 'at the beginning of the table', a que crees que se deba,
te pongo el codigo para que lo vean..muchas gracias por su ayuda....

Código Delphi [-]
 procedure Taltadecontratos.BtguardarArticuloClick(Sender: TObject);
begin

 With logicanegocio do
   begin
    If cdsArticContUnClienteCANTIDAD.Value>0 then
     begin
      if cdsContratUnCliente.State in dsEditModes then
         cdsContratUnCliente.Post;
      if cdsArticContUnCliente.State in dsEditModes then
          cdsArticContUnCliente.Post;
      { If cdsContratUnCliente.ChangeCount>0 then
          cdsContratUnCliente.ApplyUpdates(0);
          cdsArticContUnCliente.post;
      If cdsArticContUnCliente.ChangeCount>0 then
       begin
         cdsArticContUnCliente.ApplyUpdates(0);
        If cdsContratUnCliente.ChangeCount>0 then
          cdsContratUnCliente.ApplyUpdates(0);
          modulodatos.IBTransaction1.Active:=true;
          modulodatos.IBTransaction1.commit;
       end
         Else ShowMessage('Nada que gravar ');
      end  }
       Else begin
         ShowMessage('debe introducir la cantidad ');
         DBedit4.SetFocus;
       end; // End if si la cantidad es >0

     end;  // end Logicanegocio

end;

me marca el error en :

Código Delphi [-]
    cdsArticContUnCliente.Post;

Que es tabla detalle de contratos..

ecfisa 09-06-2015 23:50:38

Hola alexglez1255

Busqué por el error, supuestamente de Paradox y no es muy explícito... Al parecer indica que la tabla está vacia o no tiene un índice definido.
Espero te sirvan los enlaces.

Saludos :)

alexglez1255 19-06-2015 02:19:11

muchas gracias ecfisa, revise los enlances y quede igual....tuve que crear nuevos qrys y cliendatasets y fue de la manera que funciono y hice a un lado el cliendataset anidado, espero que a la hora de usarlos en las busquedas me funcione...muchas gracias


La franja horaria es GMT +2. Ahora son las 20:16:49.

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