Pues tendrás que explicar más a fondo la tabla que has creado, su clave primaria y los índices si es que los hay.
Yo no me he topado con ese error de invalid index, no sé a que se refiere.
Por cierto, cuando añadas código delphi, hazlo entre etiquetas delphi, de lo contrario ni lo leeremos.
[delphi]
tu codigo delphi aqui
[/delphi]
Al enviar el mensaje verás el códiigo formateado.
El tema de ordenamiento, podrías usar rangos, me explico:
Si das un valor numérico, el sql te ordenará así:
Código:
Nodo 1 orden 10
SubNodo 2 orden 10
SubNodo 1 orden 20
Nodo 2 orden 20
y ya se están mezclando los padres con los hijos. No hay forma de diferenciarlo.
Supongamos que un nivel puede tener 1000 subnodos, pues al tiempo de dar pesos lo hacemos así:
Código:
Nodo 1 orden 1000
SubNodo 2 orden 1001
SubNodo 3 orden 1002
Nodo 2 orden 2000
SubNodo 1 orden 2001
Así siempre saldrán ordenados como quieres.
Al tiempo de insertar un Nodo, haces la consulta para saber qué peso le corresponde:
Código SQL
[-]
select Max(orden)+1000 from tabla where padre = 0
Y al insertar un subnodo lo mismo:
Código SQL
[-]
select Max(orden)+1 from tabla where padre = 23 <<<<<<<<<< Nodo padre al que pertenecerá
Puesto que no se repetira el campo orden, podrías crear un índice único y ascendente por dicho campo.
(es lo primero que se me ha venido a la cabeza, igual alguien aporta una mejor solución.)
Saludos