Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Problemas con tabla Acces (https://www.clubdelphi.com/foros/showthread.php?t=47260)

silviodp 22-08-2007 22:06:12

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.

Caral 23-08-2007 01:02:31

Hola
Curiosa manera de programar.
No entiendo para que indicar Form17 a cada paso, si estas en el?
Curioso, verdad.?
Saludos

BlueSteel 23-08-2007 01:09:20

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 ???

silviodp 23-08-2007 02:30:33

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.

egostar 23-08-2007 03:09:07

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

Caral 23-08-2007 04:24:39

Hola
Coloca la base de datos y el proyecto aqui y Bill Caral, hara el milagro.:D
Que mas quisiera Bill, ese solo VB y C#.:D
Saludos

silviodp 24-08-2007 03:31:21

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!!!!

silviodp 25-08-2007 00:08:24

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'...

egostar 25-08-2007 00:14:48

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 franja horaria es GMT +2. Ahora son las 16:36:55.

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