PDA

Ver la Versión Completa : Guardar en tabla registros


Petolansa
12-11-2007, 18:36:18
Buenas gente aca estoy de nuevo, les queria consultar porque no logro
hacer funcionar lo siguiente, el primer codigo es el que me toma el producto
de la tabla stock y lo pasa a la tabla temporal rx de nombre MTREMITO.
hasta ahi bien, me lo toma y me lo va a agregando en en un dbgrid
incluso luego modifico la cantidad y me hace los calculos por linea de
detalle y todo.



begin
frmremito.mtremito.Append;
frmremito.mtremitocodigo.Value:=tstockprocod.Value;
frmremito.mtremitodescripcion.Value:=tstockpronom.Value;
frmremito.mtremito.Post;
end;



El problema empieza aqui. Este es el boton que uso para procesar los datos
quiero guardar en dos tablas correspondientes, en la de remito y remito detalle.
En la tabla de remito me guarda bien pero el problema me salta en la segunda
parte, cuando quiero volcar los datos de la tabla MT remito a la tabla Remitodetalle.



If messagedlg('Los datos del Remito con correctos?',MTwarning,mbOKCancel,0)<>
mrok
then
exit;

with dmzingueria do begin
remito.Insert;
remitonumremito.Value:=folio;
remitoclicod.Value:=strtofloat(dbtext1.Caption);
remitofecha.Value:=strtodate(fecha);
remitofacturado.Value:=false;
remito.Post;
remito.FlushBuffers;
//hasta aqui funciona y guarda bien!


//Aqui es donde no funciona, me dice mtremito not in insert or edit mode.

with mtremito do begin
first;
while not Eof do
begin
remitodetalle.insert;///Aqui le doy insert, no se si va append?
remitodetallenumremito.Value:=numremito;
remitodetalle.FieldByName('codipro').Value:= FieldByName('codigo').value;
remitodetalle.FieldByName('cantidad').Value:=fieldbyname('cantidad').Value;
remitodetalle.FieldByName('concepto').Value:=fieldbyname('descripcion').Value;
mtremito.Post;
mtremito.Next;
end;
mtremito.EmptyTable;
end;





Donde puede estar el error?

Desde ya muchas gracias

enecumene
12-11-2007, 21:04:54
intenta poniendo la siguiente linea:

with mtremito do begin
Edit;
first;
while not Eof do
begin
remitodetalle.insert;///Aqui le doy insert, no se si va append?
remitodetallenumremito.Value:=numremito;
remitodetalle.FieldByName('codipro').Value:= FieldByName('codigo').value;
remitodetalle.FieldByName('cantidad').Value:=fieldbyname('cantidad').Value;
remitodetalle.FieldByName('concepto').Value:=fieldbyname('descripcion').Value;
mtremito.Post;
mtremito.Next;
end;
mtremito.EmptyTable;
end;

espero que te ayude

Saludos.

Petolansa
12-11-2007, 21:38:36
Gacias enecumene, la verdad que no me da el error de mt remito in not in insert or edit mode, ahora me da keyviolation, a que se puede deber esto; A que repita un campo clave o cuando sale un error asi, estuve como 2 dias con esto, y la verdad que no se como resolverlo. y ahora me sale este error, perdon si es demasiado basica mi consulta

SAludo

enecumene
12-11-2007, 21:54:28
es probable que estas intentado insertar un dato repetido en un campo con clave primaria o indice. verifica en tu base de datos a ver si es asi.

Saludos.

Petolansa
12-11-2007, 23:28:47
Gracias por al respuesta, ya descubri, el campo numremito de la tabla remito detalle, ele estaba asignando el mismo numero, esa es la key violation, pero no se porque me volvioa dar error de mtremito is not in insert mode, puede ser posible esto, en algun lugar estoy guardando mal los datos?

Gracias, perdonen la molestia

Petolansa
13-11-2007, 00:51:28
Encontre el error, todo un logro para mi, era que me faltaba poner un post de la otra tabla, es raro que me haya estado tirando como que el error era en la otra tabla, peor bueno ya esta. Queria hacerles otra consulta, si bien ya se como guardar las tablas de una tabla temporal a una tabla de la bd, como se hace para extraer los datos y mostrarlos en el dbgrid? O sea la inversa

Gracias