Guardar datos nuevos y recuperados

Hola experto
Quisiera molestarte nuevamente con lo siguiente:
Tengo un formulario con un encabezado y un detalle, el detalle se recupera por un grid, a esta información recuperada le agregan más información en el grid y se guarda. EL problema que tengo es como guardar estas lineas con información nueva en el grid, todo lo recupero con un cursor.
Gracias
Mishel

1 Respuesta

Respuesta
1
Entiendo, pero para poder ayudarte necesito más datos:
A) ¿El problema que tienes es para agregar nuevos registros al cursor (grid) o a las tablas (.dbf) ) de las que obtienes el cursor?
¿Cómo agregas nuevos registros al grid (cursor)?
1) Directamente sobre el grid (Ctrl+Y)
2) ¿Mediante un botón con código append blank?
3) Mediante un formulario de carga de datos y luego el comando INSERT INTO
B) ¿Dónde tienes escrito el código SELECT SQL que crea el cursor?
1) En un evento del formulario (¿Cuál?)
2) En la propiedad recordsource del control grid
Por favor envíame estos datos y te veremos la mejor forma de solucionarlo.
Al llenar el formulario con el cursor los lleno con un cursor que lo agregue en el evento init, luego agregue un botón que generar un nuevo documento a partir del existente, esto ya lo tengo el problema es que cuando quiero por ejemplo agregar nuevas lineas al cursor esta no mes las guarda me guarda unicamente las ya existentes con sus modificaciones, finalmente tengo un botón de guardar en los cuales traslado la información del grid a la base
El encabezado lo guardo mediante un append blank (con el encabezado no tengo ningún problema) y luego un replace el código que crea el cursor para el grid lo tengo en el evento de inicio del grid ejemplo:
Creo el cursor, luego (todo en el evento de init del grid)
SELECT crsdetalle
Thisform.Refresh
crsdetalleuni
?
thisform.grid1.column2.header1.Caption="Descripción"
thisform.grid1.column2.ControlSource="crsdetalle.descrip"
thisform.grid1.column2.combo1.RowSource = "maestro.descripcion"
thisform.grid1.column2.combo1.RowSourceType = 6
y para guardar lo tengo de la siguiente forma
SELECT crsdetalle
scan
INSERT INTO detadataquimio (codpa, codigop, descrip, presc, volu);
VALUES (crsdetalle.codigop, crsdetalle.descrip, crsdetalle.dosis, crsdetalle.presc, crsdetalle.volu, )
Endscan
Gracias
Mishel
Creo que tu problema ya lo conversamos en otra consulta y es a causa de que, según tus palabras: "luego agregue un botón que generar un nuevo documento a partir del existente"
Es probable que este nuevo formulario que estas utilizando para agregar nuevos registros al cursor no contenga los comandos adecuados.
En el evento click del botón guardar del formulario con el que agregas nuevos registros debes utilizar la instrucción INSERT INTO crsdetalle (CAMPOS) VALUES (VALORES).
Por favor si es ese tu problema te pido que leas tu consulta anterior.
http://www.todoexpertos.com/mitodoexpertos/expert/questions/view/2476527/guardar-datos-de-cursor
Suerte
Carlos.
Lo de la consulta anterior es correcto y ya lo solucione agrego los campos del cursor con insert into en la tabla y ahí no hay problema, pero cuando quiero agregar nueva información que no trae el cursor ahí es el problema ya que guarda unicamente lo que trae el cursor y las modificaciones que se le agan pero no la nueva información.
porque para guardarlo asocio el nombre el cursor y el campo
thisform.grid1.column2.header1.Caption="Descripción"
thisform.grid1.column2.ControlSource="crsdetalle.descrip"
En este punto se guarda la información del cursor pero si agrego una nueva linea al grid que llena el cursor esta ya no se guarda
básicamente lo que necesito realizar es agregar información nueva al cursor existente. No se si me logro hacer entender.
Si pudieras darme una idea que estoy haciendo mal, de todas formas estoy repasando nuevamente el manual de cursor con el insert into para ver si no estoy dejando algo afuera
Mishel
Ahora si:
Si lo que necesitas es agregar un registro al cursor existente lo que debes hacer es:
Asegúrate de que tu cursor es de lectura/escritura
Si lo creaste con create cursor está todo bien, en cambio si lo creaste con una instrucción SELECT SQL debes agregar la clausula READWRITE al final de la sentencia:
SELECT ..... INTO CURSOR micursor READWRITE.
Luego, en el formulario que utilizas para agregar el nuevo registro asegúrate de que en el evento click del botón guardar se encuentren los comandos:
INSERT INTO MICURSOR (lista de campos) VALUES (lista de valores)
Este comando reemplaza a los comandos APPEND BLANK y REPLACE, es decir que reduces dos comandos en uno sólo.
Finalmente, agrega la línea THISFORM. REFRESH luedo del DO FORM, en el evento click del botón que llama al formulario de carga de nuevos registros.
Con esto deberías solucionar tu problema. Verás que los nuevos registros te aparecerán en el grid.
Suerte y cualquier duda me avisas.

Añade tu respuesta

Haz clic para o