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 

Problemas con DBLookupListBox ySQL

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problemas con DBLookupListBox ySQL Responder citando

Saludos a todos los del foro.

Estoy haciendo una aplicacion enla que tengo un DBLookupListBox, en la propiedad datasource, tiene el datasource del query que ocupo. Pero quiero que este ordenado alfabéticamente, lo hice con el siguiente codigo:

QueryClientes->Close();
QueryClientes->SQL->Clear();
QueryClientes->SQL->Add("select * from tClientes orcder by NomCli asc");
QueryClientes->Open();

pero al ejecutar la aplicación me sale un error que dice:
"Acces violaton at Addres 405C4E7E in Module VCLDB50.BPL..."
Crying or Very sad
Creanme que lo pense mucho y busque de todas formas encontrar el origen de este error.
Por Favor ayúdenme!!!!!!! Estoy desesperada Crying or Very sad
Gracias por su atención y pronta respuesta
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

esta bien escrito "orcder"? y elimina el asc
Volver arriba
Mensaje    Asunto: Responder citando

Supongo que el DataSource del que tira tu Query lo tines asociado al compo por la propiedad ListSource del mismo y no por la DataSource.
No sé si será eso.
Tendrás que poner además del ListSource, el ListField y el KeyField.
En principio la consulta no debería darte problemas.
suerte!!
Volver arriba
Mensaje    Asunto: DBLookupListBox y Query Responder citando

Smile Gracias por la contestación, a DesaSoftware le contesto que lo de order fue error de dedo Rolling Eyes
y a mgf le digo que, el query lo tengo asociado al campo por la propiedad Listsource, y tambien tengo asignado el listfield y el key field, pero nada Sad

En fin lo que quiero hacer es tener un formulario de catalogo de empleados, donde se pueda agregar, modificar, eliminar, consultar, datos de los empleados, lo pretendo hacer, poniendo un DBLookupListBox, que muestre los nombres de los empleados, varios DBEdit, y botones (no DBNavigator) para agregar, editar,eliminar, grabar, o cancelar.

La propiedad ListSource del DBlookupListBox y la propiedad Datasource de los DBEdit tienen el mismo datasource que es el datasource del Query. Como ya mencione la consulta para que rellene el DBLookupListBox es:

Código:
Query1->Close();
  Query1->SQL->Clear();
  Query1->SQL->Add("Select * From  tEmpleados ORDER BY NomTrab ASC");
  Query1->Open();


pero me manda el error que ya mencione.

Si ignoro el código anterior para que ya no ordene y trato de agregar registros mediante el siguiente código:

Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Query1->Insert();
}


me sale un error que dice que el Query no puede escribir en un Dataset de sólo lectura, pero en la propiedad ReadOnly de los componentes que ocupo estan en false. Confused

¿Qué hago? Crying or Very sad ¿Aguien sabe en donde está mi error? O me pueden dar alguna referencia para que mi formulario funcione. Sad
Agradecere mucho que me puedan ayudar, por adelantado agradezco la atención prestada y pido disculpas por las molestias Laughing

Ahh se me olvidaba decir (aunque creo que es obvio) que no tengo mucha experiencia con Query Wink
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

HOLA:

Bueno, el 1º error, comprueba si antes de abrir la nueva Query, no tienes creados campos calculados, tambien tienes que comprobar el orden de creacion de los componentes (Esto solo si el problema no viene en ejecucion).

2º El segundo "" ERROR"" , lo puedes solucionar si en la propiedad
TQuery ->RequestLive = true;

Pero no es un error, no me cansare de decir , que TQuery no debe usarse para actualizar datos, solo debe usarse para leer datos, (existen miles de hojas escritas sobre el porque, asi que no me explayare).

Nota: No creo que el primer error este en la sintaxsis de la query.

By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por la Respuesta y recomendacion Toño Smile

Pero te digo que la propiedad RequestLive está como dices y aun así no me deja escribir pero bueno, siguiendo tu recomendación, ya no voy a ocupar TQuery para actualizar te explico que es lo que intento hacer para que mi formulario funcione:

El DBLookupListBox, sigue igual, pero ahora tengo un conjunto de DBEdits, los cuales en su propiedad datasource, tienen el datasource del Query, esto para que el usuario vea los datos actuales, y aparte tengo otro conjunto de DBEdits, los cuales en su propiedad datasource, tienen el dataource de la tabla (tClientes). este conjunto para que el usuario modifique los datos que quiera.Pues bien este es el codigo del boton Editar

Código:
void __fastcall TfClientes::BitBtn2Click(TObject *Sender)
{
Edit1->Text="ClaveCli='"+DataModule1->Qclientes->FieldByName("ClaveCli")->Value+"'";
DataModule1->tClientes->Filter=Edit1->Text;
DataModule1->tClientes->FindFirst();
DataModule1->tClientes->Edit();
}


lo compilo y todo esta bien pero, al ejecutarlo, y hacer click en el boton editar me marca el error que ya mencione
"Acces violaton at Addres 405C4E7E in Module VCLDB50.BPL..."

En verdad no entiendo que puede estar pasando, porque pruebo el mismo código con otras tablas y en un proyecto nuevo y funciona!!, pero al hacerlo en mi aplicación ¡nada!

Crying or Very sad Por Favor si alguien me puede ayudar se lo agradecería mucho, o si conocen alguna otra forma de mostrar los datos ordenados alfabeticamente, probe con un código que vi aqui mismo en el foro
Código:
//Ordenar alfabéticamente
Tabla->Active = false;
Tabla->IndexFieldNames = campo;
Tabla->Active = true;

pero no funciona.
Unba vez más disculpen las molestias y gracias por la atención
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

HOLA:

Probado en interbase con c++ builder 5

Edit1->Text="codigo ='"+Query1->FieldByName("CODIGO")->Value+"'";
Table1->Filter=Edit1->Text;
Table1->FindFirst();
Table1->Edit();

funciona perfectamente


Probado en interbase con c++ builder 5

Table1->Active = false;
Table1->IndexFieldNames = "DESCRIPCION";
Table1->Active = true;

funciona perfectamente.



El error tiene que estar en otro sitio.


1º ¿la query sigue siendo select * from cliente order by codigo ?
2º "Tabla->IndexFieldNames = campo; " campo es un indice que ya has creado ¿no? .

Pues no se que te puede estar pasando, necesitaria mas codigo.

By.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola, no sé si abrás solucionado tu problema, pero puede que el problema está en:
DataModule1->Qclientes->FieldByName("ClaveCli")->Value
porque cuando no ordenas, puede que ese valor no sea nulo y cuando ordenas sí, es decir, que a lo mejor tienes que comprobar si es nulo antes de acceder a él. Creo que era con IsNull.
Volver arriba
Mensaje    Asunto: Responder citando

Ya intentaste hacer la prueba sin la instruccion ORDER? (sIN ORDENAR LA CONSULTA) ?
Volver arriba
Mensaje    Asunto: Responder citando

Ya intentaste hacer la prueba sin la instruccion ORDER? (sIN ORDENAR LA CONSULTA) ?
Volver arriba
Mensaje    Asunto: Responder citando

El query de los empleados es asignado en ejecucion, pero tal vesz tengas parametros asiganados en tiempo de diseño.

tal vez al cerrar el query, generas un error en los demas controles por que no existe el "campo" referenciado debido a qu el query ya lo cerraste (aunque inmediatamente lo vuelvas a abrir).
Asignado todo en tiempo de diseño o todo en tiempo de ejecucion

Por otro lado.

Yo manejo 2 querys. Uno para la consulta y otro para la actualizacion
en la consulta puedo filtrar , insertar columans de otras bases de datos , ordenar etc (debido a eso no puedo modificar, (checalel libro la cara oculta de c++ etc)

Entonces asignaria el query de consulta al dblookup y al momento de seleccioanr el elemento utilizaria el queryModificar con un
queryModificar->SQL->Clear();
queryModificar->SQL->Add("select * from tcliente where codigocliente='"+queryConsulta->FieldByname("codigocliente")->AsString+"'");
queryModificar->Open();

Este queryModificar es que estaria ligado a los controles tdbedit para modificar o insertar

para insertar o borrar



QueryModificar->Close();
QueryModificar->SQL->Clear();
QueryModificar->SQL->Add("Delete from Country where Name = 'Argentina'");
Query1->ExecSQL();

Bueno. algo asi.. ya estoy cansadop son las 2:45 am. te prometo que mañana enviare algo mas coherente.. Sad

Saludos de Mexico Playa delCarmen

Ing. Gabriel Góngora
Volver arriba
Mensaje    Asunto: Responder citando

Very Happy Gracias a todos por sus respuestas, aun no he resuelto el problema, pero voy a probar con todo lo que me dicen y después les cuento.


Muchísimas gracias por prestar atención a mi problema Very Happy
Volver arriba
Mensaje    Asunto: Responder citando

Very Happy Gracias a todos por sus respuestas, aun no he resuelto el problema, pero voy a probar con todo lo que me dicen y después les cuento.

Se me olvidaba mencionar que ocupo Paradox


Muchísimas gracias por prestar atención a mi problema Very Happy
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.