 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Lun 19 Ene, 2004 9:50 pm Asunto: Problemas con Arreglos |
|
|
Tengo un arreglo para sacar unformación de una consulta de un Query y colocar cada resultado en un Edit, de la sig. forma:
for(i=1;i< 8;i++)
{
Query1->ParamByName("fecha1")->AsDate = StrToDate(fecha1);
Query1->ParamByName("fecha2")->AsDate = StrToDate(fecha2);
Query1->ParamByName("marca")->AsString = yao[i];
Query1->Close();
if (!Query1->Prepared)
Query1->Prepare();
Query1->Open();
a = AnsiString(IntToStr(Query1->FieldByName("conteo")->AsInteger));
Edit(i)->Text = a;
}
Pero me manda el error:
[C++ Error] reporte_capturistas.cpp(49): E2268 Call to undefined function 'Edit'
y ya probé con Edit[i]->Text
Editi->Text
Edit"i"->Text... bla bla bla
Podrían decirme cual es mi error????? _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Lun 19 Ene, 2004 11:26 pm Asunto: |
|
|
Podrias publicar la declaracion de tu arreglo de edit's ya que por lo que veo en tu ejemplo quieres acceder al Text de un arreglo de ellos.... ¿estoy en lo correcto?. Ya que de ser asi deberias haber declarado en Ejecucion tu arreglo.
Ya que si tienes un Edit1, Edit2, Editn puesto en diseño, nunca de va a funcionar asi...
Saludos! _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 20 Ene, 2004 3:54 pm Asunto: |
|
|
Gracias Viktor, por contestar, y si,
los tengo como Edit1,Edit2... Editn. Y como tu dices no tendré lo que quiero, haber si me puedes ayudar a como declaro le arreglo de Edit's y como los mando llamar conforme a el código que estoy utilizando, por favor.
Gracias de antemano. |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Mar 20 Ene, 2004 5:57 pm Asunto: |
|
|
Hola, puedes usar la funcion FindComponent, seria algo como esto, pensando en que tengo cuatro Edit's, desde el Edit1 al Edit4, solo les asigno el valor de i:
| Código: | TObject *EditActual;
for(int i=1;i<=4;i++)
{
EditActual = FindComponent("Edit"+IntToStr(i));
((TEdit*)EditActual)->Text = i;
} |
Haber si eso te sirve
Saludos! _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Mar 20 Ene, 2004 6:47 pm Asunto: |
|
|
ok, déjame lo pruebo en cuanto regrese de comer, gracias Viktor. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Sab 31 Ene, 2004 1:49 am Asunto: |
|
|
Que onda Viktor, pues veras que he probado con el código que has enviado pero me envía un error super garrafal ¡¡¡¡¡¡¡ lo probé con:
| Código: |
TObject *EditActual[3];
for(i=1;i< 3;i++)
{
Query1->ParamByName("fecha1")->AsDate = StrToDate(fecha1);
Query1->ParamByName("fecha2")->AsDate = StrToDate(fecha2);
Query1->ParamByName("marca")->AsString = yao[i];
Query1->Close();
if (!Query1->Prepared)
Query1->Prepare();
Query1->Open();
EditActual[i] = FindComponent("Edit"+IntToStr(i));
a = AnsiString(IntToStr(Query1->FieldByName("conteo")->AsInteger));
((TEdit*)EditActual)->Text = a;
}
|
y con :
| Código: |
TObject *EditActual;
for(i=1;i< 3;i++)
{
Query1->ParamByName("fecha1")->AsDate = StrToDate(fecha1);
Query1->ParamByName("fecha2")->AsDate = StrToDate(fecha2);
Query1->ParamByName("marca")->AsString = yao[i];
Query1->Close();
if (!Query1->Prepared)
Query1->Prepare();
Query1->Open();
EditActual = FindComponent("Edit"+IntToStr(i));
a = AnsiString(IntToStr(Query1->FieldByName("conteo")->AsInteger));
((TEdit*)EditActual)->Text = a;
}
|
Y con los dos me recorre el ciclo, pero después de que terminal, me envia un error:
Proyect: C:\bin\reporte.exe faulted with message:'access violation at 0x00000000: reda of address 0x00000000'.Process stoped.Use Step or Run to continue.
Y me manda diplomaticamente a la chi&%$$# y sin escalas.
Como ves, alguna idea???? _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Sab 31 Ene, 2004 2:01 am Asunto: |
|
|
Haber, puedes explicar en palabras que es lo que quieres hacer con el resultado de la consulta, ya que al tener el Query dentro del ciclo abres las 3 veces el mismo registro y no creo que sea eso lo que quieres...
Saludos! _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Sab 31 Ene, 2004 4:25 am Asunto: |
|
|
Pues mira Viktor, no abro el mismo registro con el Query, si te fijas, tengo un paràmetro dentro del query que lo voy cambiando con el arreglo, yao[N], y de esa forma me envìa diferenctes resultados, y lo quiero hacer por la razòn que pongo en uno de los post, donde especifico que utilizo como 80 Query`s pero me manda un error,(la informaciòn la saco de un .dbf), entosces lo que quiero hacer es, primero poner el resultado del Query en diferentes Edit`s con la informaciòn que necesito y asì no utilizar mucho Query`s.... Me entiendes????
Y muchas gracias por la ayuda que puedas otorgarme, creeme que yo he dado una y dos respuestas a post`s, pero con lo que estoy aprendiendo aquì, algun dia ayudarè màs. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Sab 31 Ene, 2004 4:48 am Asunto: |
|
|
Hola, lo unico que veo que pueda estar mal, asi a simple vista es que al recorrer tu arreglo, llamado "yao", empiezas desde la posicion 1 (segun el valor de i), otra cosa es que la forma en que tienes hecho el for es para 2 edit's, por lo que entiendo tu arreglo tiene 3 posiciones y tienes 3 Edit's, verdad ? si es asi el codigo tendria que quedar de la siguiente manera:
| Código: | TObject *EditActual;
for(i=0;i<= 3;i++)
{
Query1->ParamByName("fecha1")->AsDate = StrToDate(fecha1);
Query1->ParamByName("fecha2")->AsDate = StrToDate(fecha2);
Query1->ParamByName("marca")->AsString = yao[i];
Query1->Close();
if (!Query1->Prepared)
Query1->Prepare();
Query1->Open();
EditActual = FindComponent("Edit"+IntToStr(i)+1);
a = AnsiString(IntToStr(Query1->FieldByName("conteo")->AsInteger));
((TEdit*)EditActual)->Text = a;
} |
Espero asumir bien, de lo contrario indicame como esta la declaracion del arreglo yao y cuantos Edit's tienes...
Bueno eso, saludos y espero te sirva.. _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Sab 31 Ene, 2004 8:02 pm Asunto: |
|
|
Gracias Viktor, en realidad como te comenté, son como 80 consultas las que haré , pero quería hacer la prueba con solo 2 o tres consultas, y el arreglo esta de la siguiente forma:
| Código: | int i;
TObject *EditActual[3];
AnsiString yao[3];
AnsiString a,b,c;
yao[1] = "+L%PAFA%";
yao[2] = "-L%PAFA%";
yao[3] = "+P%PAFA%";
AnsiString fec1,fec2,fecha1,fecha2;
fec1 = AnsiString(DateTimePicker1->Date);
fec2 = AnsiString(DateTimePicker2->Date);
fecha1 = fec1.SubString(1,10);
fecha2 = fec2.SubString(1,10);
ShortDateFormat = "dd/mm/yyyy";
for(i=1;i< 3;i++)
{
Query1->ParamByName("fecha1")->AsDate = StrToDate(fecha1);
Query1->ParamByName("fecha2")->AsDate = StrToDate(fecha2);
Query1->ParamByName("marca")->AsString = yao[i];
Query1->Close();
if (!Query1->Prepared)
Query1->Prepare();
Query1->Open();
EditActual[i] = FindComponent("Edit"+IntToStr(i));
a = AnsiString(IntToStr(Query1->FieldByName("conteo")->AsInteger));
((TEdit*)EditActual)->Text = a;
} |
Le ves algún defecto ????
[/code] _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Sab 31 Ene, 2004 8:11 pm Asunto: |
|
|
Hola, como te digo, los arreglos comienzan desde 0, es decir tu arreglo yao[3] tiene las pocisiones yao[0], yao[1], yao[2], entonces tu codigo quedaria de la siguiente forma, fijate tambien en la linea donde buscas los componentes, debido a que el i = 0 en el primer ciclo estarias buscando el "Edit0", y solo necesitas un EditActual, no un arreglo de ellos:
| Código: | int i;
TObject *EditActual;
AnsiString yao[3];
AnsiString a,b,c;
yao[0] = "+L%PAFA%";
yao[1] = "-L%PAFA%";
yao[2] = "+P%PAFA%";
AnsiString fec1,fec2,fecha1,fecha2;
fec1 = AnsiString(DateTimePicker1->Date);
fec2 = AnsiString(DateTimePicker2->Date);
fecha1 = fec1.SubString(1,10);
fecha2 = fec2.SubString(1,10);
ShortDateFormat = "dd/mm/yyyy";
for(i=0;i< 3;i++)
{
Query1->ParamByName("fecha1")->AsDate = StrToDate(fecha1);
Query1->ParamByName("fecha2")->AsDate = StrToDate(fecha2);
Query1->ParamByName("marca")->AsString = yao[i];
Query1->Close();
if (!Query1->Prepared)
Query1->Prepare();
Query1->Open();
EditActual = FindComponent("Edit"+IntToStr(i+1));
a = IntToStr(Query1->FieldByName("conteo")->AsInteger);
((TEdit*)EditActual)->Text = a; |
Prueba con eso... _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Sab 31 Ene, 2004 8:19 pm Asunto: |
|
|
Tienes toda la razón Viktor, ya me corrió a la perfección, perdona si pregunto vanalidades, pero empecé con Builder desde Junio del año pasado.
Muchas gracias otra vez. _________________ Sin pena, ni gloria |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Sab 31 Ene, 2004 8:29 pm Asunto: |
|
|
No ahi problema que si puedo ayudar lo hare siempre, ademas todos nos equivocamos en "tonteras" en algunos momentos y solo falta que alguien vea tu codigo para decir "ups ahi estaba el error"
Bueno, suerte en eso  _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|