Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Como intercambio registros en dbase lV ?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Como intercambio registros en dbase lV ? Responder citando

hola primera ves que escribo a este foro, y no hace mucho que estoy con C++ builder les agradeceria que puedan ayudarme..
Mi problema es que quiero intercambiar dos registros de una misma tabla dbase lV, es decir como una funcion swap y no puedo realizar esto, se podria realizar esto por medio de variables que puedan alvergar cada campo, pero quiero saber si es posible trabajar directamente con el puntero a los registros esto seria un poco mas rapido. La pequeña aplicacion que estoy realizando es local y uso c++ builder 4.
gracias...
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Puedes ser un poco mas explicito para poder ayudarte.

Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Bien mira el problema es el siguiente, suponiendo que la tabla ya tiene datos y tengo un registro que esta en la posicion 4 de dicha tabla y otra en la posioion 5, quiero mover todos los datos del row=5 al row=4, y los que estban en el row=4 al row=5, es igual a cuando se realiza una reguduccion Gaussiana en una matriz y se intercambian los renglones.
Se que mi pregunta quisas no tenga mucho sentido ya que si es por un motivo de ordenar la tabla podria utilizar un index, es mas en sistemas cliente/servidor ni hablar.
Espero se entienda mejor ....
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Hace ya años que dejé de usar dbase III+ y también clipper, luego no recuerdo apenas nada de nada de esos sistemas... Lo que si recuerdo hoy en día sobre los sistemas de base de datos relacionales, es que no tiene ningun sentido el orden de las tuplas dentro de una tabla, o por lo menos esto no debería preocupar en absoluto para trabajar con la tabla.

Ciao y perdona si no respondo a tu pregunta, pero es una de las cosas que siempre se puede leer en cualquier buen libro sobre base de datos.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Y Buildero crees poder ayudarme o recomendarme alguna bibliografia (la cara oculta ya pero no esta) ¿lo que yo pregunto es imposible? en relidad yo me estoy metinedo un poco mas alla de una simple consulta a una tabla, estoy querindo manipular a pulmon las tablas por eso es esta pregunta....
no es para trabajar con una base de dato estoy metido con las estructuras en memoria de las tabas.....

A y a vos "Master" agradesco que te ayas preocupado pero no me sirve de nada tu aclaracion eso ya lo sabia y menos mal que lo mensione anteriormente

"Se que mi pregunta quisas no tenga mucho sentido ya que si es por un motivo de ordenar la tabla podria utilizar un index, es mas en sistemas cliente/servidor ni hablar. "

de todas formas gracias Master pero no adelanto nada....
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Perdona Tor quizás no entendí bien tu pregunta, por cierto no me llamo Master, eso es el nivel que se adquiere simplemente por número de mensajes, mi nick es XyVy.

Cuando dices que quieres intercambiar dos registros y que usas dbase IV, asumo que tu pregunta está relacionada con base de datos... si estás hablando de dos registros de C, y tienes un puntero a ellos claro que puedes intercambiarlos...

Lo que no entiendo muy bien, es porque necesitas hacer eso, imagino que tus motivos tendrás, generalmente el orden que tienen los registros en una tabla, viene motivado por un Indice que se crea sobre la clave primaria de esta, aunque no tiene porque ser así, pues el orden no nos deben preocupar desde el punto de vista relacional.

Tampoco entiendo porqué dices que en sistemas cliente/servidor ni hablar... Pues la mejora de ordenar en el servidor, ya sea con un indice o con una consulta, mejorará la escalabilidad del sistema, al hacerla unicamente dependiente del servidor.

Me gustaría ayudarte, pero realmente no sé si lo que yo entiendo que quieres hacer se puede hacer...

En fín, suerte!
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Argentino Tor:

No existe (o por lo menos no lo he visto) alguna funcion que haga lo que necesitas , lo que hace la funcion swap en en Turbo C,pero en terminos de registros de dbase IV.

No veo muy dificil hacer una funcion generica que lo haga, pero como bien dice XyVy, no le veo el caso

Que uso tiene cambiar de la posicion 10 a la posicion 100 un registro, no se me ocurre que utilidad pueda tener (ahora cuando usamos consultas para leer la informacion) , lo unico que se podria ser es "agilizar consultas"..bueno para eso tienes los indices..y si no es lo suficientemente rapido..bueno.. migra a un manejador de bases de datos de verdad


Pero respondiendo a tu pregunta (aunque no le vea razon de ser..corigeme e ilustrame el porque necesitas hacer un swap en rgistros)

el algoritmo seria:

1.- Leer cada uno de los campos, sabiendo el tipo (ve propiedades del objeto TField
2.- Crear en memoria (punteros new) un array de variables donde se guarde cada uno de los campos
3.- Leer el valor de cada uno de los campos en el registro A y guardarlso en la memoria
4.- Sustituir los valores del campo A con los valores de B
5.- Sustituir los valores del camoi B con los datos que estan en el arreglo de memoria
6.- Liberar el array de punteros

Por otro lado despues de ver tu aclaracion con respecto al as matrices y reduccione etc etc, tal vez lo mas optimo es LEER TODA LA TABLA EN MEMORIA , trabajar con ella (swaps y todo eso a nivel array) y GRABAR EL RESULTADO EN FORMATO TABLA AL FINAL GENERANDO UN ARCHIVO, ya que hacerlo al nivel disco si son mucha iteracciones no creo que sea lo mejor.

Ya el codigo me da mucha flojera hacerlo asi que te diviertas Smile

Anexo alas 6:27 am del domingo:

Tor.. se me ocurre otra alternativa.. agrega un campo numerico llamado ORDEN o POSICION, asignale un indice, y en lugar de cambiar TODOS los campos, simplemente haces intercambio (swap) en ese UNICO campo. Automaticamente quedara ordenado gracias al indice nuevo

Por otro lado, sigo sin entender para que necesitas esto.. sacama de la duda.. jejeje Saludos
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.