Insertar Fila en un dbgrid o una tabla

Necesito el código de insertar una fila en cualquier lugar de mi tabla que no tiene ningún tipo de sort o indice, por ejemplo:
Nombre Observación
------ --------------
Jaime local
Jose local
Ahora quiero insertar pedro, es decir:
Nombre Observación
------ --------------
Jaime local
Pedro interior
Jose local
Disculpas por ser tan extenso.

2 Respuestas

Respuesta
1
En SQL seria de la forma
INSERT INTO NOMBRE_TABLA
VALUES ('JOSE','LOCAL');
Estimado molk tengo una sugerencia pero no tengo los conocimientos del código a ver si me puedes colaborar te explico:
Supongamos que tengo 10 registros o filas en una tabla llamada original ok.
Intento insertar en la fila 6
Mi idea es la siguiente
a) Abrir la tabla original
b) copiar el contenido de la tabla original pero incluyendo los registros 1 al 5 e incrementar un registro en blanco en la tabla2
c) copiar el contenido de la tabla original con los registros del 6 al 10 en la tabla3
d) Eliminar el contenido de la tabla original e importar el contenido de la tabla2 y tabla3 y así tendría insertada la fila.
Ahora realmente no tengo información de como exportar tablas incluyendo un rango de registros y como importar registros, espero haber explicado la idea bien.
Espero tu respuesta con ansiedad chao.
Yo no lo haría de esa forma.
Lo que tendría yo seria un campo clave, que solo tuviera el numero de la fila, ya que no es buena idea dejar filas en blanco.
Así solo tendrías que insertar datos de la forma
insert into original values (1,Antonio,Diaz)
insert into original values (2,Pedro, Garcia)
.
.
.
insert into original values (6,,)
insert into original values (7,Maria, Garcia)
Y así sucesivamente.
Estimado Molk bueno tu idea también paso por mi mente pero te explico:
Si tengo el indice con el numero de registro cuando quiera insertar un registro entre otros que numero le doy al registro Ejemplo:
insert into original values (1,Antonio,Diaz)
insert into original values (2,Pedro, Garcia)
Pero quiero insertar entre los dos como aumento el registro nuevo
Por otro lado la tabla que manejo no es muy aplia siempre llegara a los 200 registros como máximo así que utilizar el proceso que te comente anteriormente se satisfaceria pero como te explique no se como exportar ni importar registros, espero comprendas mi posición, espero tus comentarios y en lo posible el código de import y export gracias.
Ahora he entendido mejor el problema que tienes. En este caso, tu problema es de ordenación. Para ello, lo mejor es que crees un campo que establezca esa ordenación. EN una base de datos no es buena idea estar borrando y volviendo a crear la misma tabla para estos casos, opr lo que seria aconsejable que tuvieras un campo de ordenación, y ese seria el campo que seria sobreescrito en caso de nueva ordenación.
Por ejemplo, tendríamos una tabla así
Clave nombre posición
1 antonio 1
2 pedro 2
.
.
.
Si quisiemos insertar a juan en la posición 2, haríamos la inserción (3, juan, 2) pero nos tendríamos que asegurar de que todos los demás valores de la base de datos se cambiaran. De la forma
(2, pedro,3)
Etc etc
Respuesta
Si te disculpas por ser extenso con esta pregunta es porque no has visto las que hay por ahí.
Bueno, lo que sí sería extenso sería ponerte el código para la inserción, por lo que te pongo sólo el algoritmo para que tú trabajes un poquito :). Después de esta mala noticia viene otra: no hay un método VB para la inserción en una tabla sin índice, por lo que hay que hacerla 'a mano'.
El algoritmo sería algo así:
Determinar la posición de inserción en la tabla.
Crear una tabla nueva con la misma estructura que la tabla original pero vacía.
Recorrer la tabla original desde el primer elemento hasta el punto de inserción, copiando cada elemento sobre la tabla nueva.
Insertar el nuevo elemento en la tabla nueva.
Recorrer la tabla original desde el punto de inserción hasta el final, copiando cada elemento sobre la tabla nueva.
Sobreescribir la tabla original con la tabla nueva.
Refrescar datos en pantalla.
Si necesitas algo más o que te aclare algo, aquí estoy. Un saludo.
P.D.
La respuesta es algo extensa, pero también las he visto aún más largas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas