Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-08-2007
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Problemas con tabla Acces

Hola a todos, estoy haciendo una aplicacion con Delphi 5 y base de datos Acces.
Hice el siguiente procedimiento para que me llene de datos la tabla TblComprobantes para lo cual uso dos tablas mas: TblSocios y TblPeriodos.
El error que me da cuando corro el procedimiento mediantes un boton es que me dice que el campo "Numero" no puede ser modificado.
La estrcutura de la tabla TblComprobantes es la siguiente:

Numero (Numero)
Cod_socio (Numero)
Cod_periodo (Numero)
Importe (Moneda)
Estado (texto)
fecha_pago (Fecha/hora)
fecha (Fecha/hora)
Nota (Memo)

el Procedimeinto del boton Generar es:
Código:
procedure TForm17.generarClick(Sender: TObject);
var
 Periodo: Integer;
 Codigo: Integer;
 Fecha: Variant;
 cont:Integer;
 Numero:Integer;
begin
 Modulodatos.ADOConnection1.Open;
 ModuloDatos.TblSocios.Active:=True;
 ModuloDatos.TblPeriodos.Active:=True;
 ModuloDatos.TblComprobantes.Active:=True;
 ModuloDatos.TblSocios.First;
 cont:= ModuloDatos.TblSocios.RecordCount;
 Form17.ProgressBar1.Max:=cont;//Establezco el valor maximo.
 Form17.ProgressBar1.Cursor:=crHourGlass;  //Establezco el cursor de espera.
 Numero:=StrToInt(Form17.Ultimo_em.Text);  //Inicializo la vble. NUMERO.-
 Fecha:=Form17.fecha_em.Text;
 Periodo:=StrToInt(Form17.txtPeriodo.Text);
 ShowMessage (IntToStr(Numero));
 While Not ModuloDatos.TblSocios.EOF do
  begin
   Codigo:= ModuloDatos.TblSocios.FieldValues['Codigo'];
   ModuloDatos.TblComprobantes.Append;
   ModuloDatos.TblComprobantes.FieldValues['Numero']:=Numero+1;
   ModuloDatos.TblComprobantes.FieldValues['Cod_socio']:= Codigo;
   ModuloDatos.TblComprobantes.FieldValues['Cod_periodo']:=Periodo;
   ModuloDatos.TblComprobantes.FieldValues['Importe']:=6.00;
   ModuloDatos.TblComprobantes.FieldValues['Fecha']:=Fecha;
   ModuloDatos.TblComprobantes.Post;
   Form17.ProgressBar1.StepIt; //Actualizo la barra de progreso.
   Numero:= ModuloDatos.TblComprobantes.FieldValues['Numero'];
   ModuloDatos.TblSocios.Next;
 end;
 ShowMessage('El proceso a terminado correctamente');

end;
Como puedo solucionar este problema?
Gracias a todos ,saludos.
Responder Con Cita
  #2  
Antiguo 23-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Curiosa manera de programar.
No entiendo para que indicar Form17 a cada paso, si estas en el?
Curioso, verdad.?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 23-08-2007
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
tu error puede ser por que estas ocupando la tabla .. e intentas insertar algo... es decir.. estas viendo un registro en la tabla.. y al mismo tiempo la quieres modificar...

te recomendaria que lo utilices con Query para insertar los datos... y tb me sumo a la pregunta de caral.. por que haces referencia al Form en el que estas trabajando ???
__________________
BlueSteel
Responder Con Cita
  #4  
Antiguo 23-08-2007
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Problemas con tabla Acces

Hola, si es cierto estoy haciendo referencia a un Form en el cual estoy, lo hice sin darme cuenta..., perdón "Bill" Caral...jajajaja es un chiste!!!
Vamos a lo que interesa: si es cierto que debo querer hacer algo asi, pero no entiendo porque ya que mi tabla esta vacia, la verdad es que no me doy cuenta... Con un query como seria?, me darias un pequeño ejemplo??
Desde ya muchas gracias.
Responder Con Cita
  #5  
Antiguo 23-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Y que se supone que haces con esto

Código Delphi [-]
 
   Numero:= ModuloDatos.TblComprobantes.FieldValues['Numero'];

No seria mejor omitir esa linea y hacer esto?

Código Delphi [-]
While Not ModuloDatos.TblSocios.EOF do begin
   Codigo:= ModuloDatos.TblSocios.FieldValues['Codigo'];
   Inc(Numero); //Incrementas el numero
   ModuloDatos.TblComprobantes.Append;
   ModuloDatos.TblComprobantes.FieldValues['Numero']:= Numero;
   ModuloDatos.TblComprobantes.FieldValues['Cod_socio']:= Codigo;
   ModuloDatos.TblComprobantes.FieldValues['Cod_periodo']:=Periodo;
   ModuloDatos.TblComprobantes.FieldValues['Importe']:=6.00;
   ModuloDatos.TblComprobantes.FieldValues['Fecha']:=Fecha;
   ModuloDatos.TblComprobantes.Post;
   Form17.ProgressBar1.StepIt; //Actualizo la barra de progreso.
   ModuloDatos.TblSocios.Next;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 23-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Coloca la base de datos y el proyecto aqui y Bill Caral, hara el milagro.
Que mas quisiera Bill, ese solo VB y C#.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 24-08-2007
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Problemas con tabla Acces

Hola disculpen que respondi tarde, pero no pude entrar al foro hoy. Voy a probar con lo que me sugirio egostar...
Caral no dudo que me podés ayudar si lo anterior no me funcina te paso bien la base y el proyecto, y con respecto al Bill...jajajaja tenés mucha razon...es solo VB...
Saludos gente!!!!
Responder Con Cita
  #8  
Antiguo 25-08-2007
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Problemas con tabla Acces

Egostar probre con lo que vos me dijiste pero me da el mismo error:
"Project Project1.exe raised exception class EDataBaseError with message 'Field 'Numero' cannot be modified'...
Responder Con Cita
  #9  
Antiguo 25-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
oooh

Creo que todos no nos hemos percatado de un detalle

estas usando

Código Delphi [-]
 
ModuloDatos.TblComprobantes.FieldValues['Numero']:=Numero;

y deberias usar

Código Delphi [-]
 
ModuloDatos.TblComprobantes.FieldByName['Numero']:=Numero;

En todos los casos.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 25-08-2007 a las 00:20:26.
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
Filtro en tabla Acces en C++ Builder JuanErasmo Tablas planas 1 22-11-2006 16:18:51
Delphi 7 + ADO + Acces + Insercción en tabla con clave autonumérica sostro Conexión con bases de datos 5 16-07-2005 17:44:38
Borra registros duplicados en tabla ACCES manu Conexión con bases de datos 2 24-05-2005 22:15:39
Problema con una tabla de acces manu Conexión con bases de datos 2 13-04-2005 19:45:56
Copiar una tabla en Acces agonzalez Conexión con bases de datos 1 30-08-2003 01:48:58


La franja horaria es GMT +2. Ahora son las 19:07:22.


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