Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Evitar Datos Repetidos?? (https://www.clubdelphi.com/foros/showthread.php?t=68375)

Bare 10-06-2010 02:50:16

Evitar Datos Repetidos??
 
Hola a todos, ahora me tope con este problema...:(
Necesito saber como hacerle para que el programa verifique que no exista un registro igual en la base de datos, como puedo hacerlo?
Dejen les pongo la idea que tenia, el codigo no esta correcto:

Código:


parametro1=ComboBox1->Text; //ANIO
parametro2=ComboBox2->Text; //LOCALIDAD
parametro3=ComboBox3->Text; //EVALUACION


ADOQuery->SQL->Text = "select * from Tabla_Prueba where [Año] = '"+parametro1+"'  AND Localidad = '"+parametro2+"' AND Evaluacion = '"+parametro3+"' ";


if( ADOQuery->SQL->Text == NULL ) {
//AGREGAR DATOS

else
SHOWMESSAGE("EL REGISTRO YA EXISTE");
}

Como pueden ver en el codigo,la idea es buscar un registro que coincida con Año, Localidad y Evaluacion, de ser asi, el registro ya esta y no puede agregarse de nuevo...
Alguna sugerencia?..Espero haberme dado a entender..:)

Casimiro Notevi 10-06-2010 02:51:39

Sí, la idea es correcta :)

Mira este tema que ha sido tratado hoy, puede servirte.

Bare 10-06-2010 04:09:14

Que tal amigo, ya cheque el tema y me dejo pensando sobre lo de la llave primaria, pero el problema es que para saber si el registro existe, tienen que coincidir los 3 campos (AÑO,LOCALIDAD,EVALUACION),asi que no puedo usar lo del campo llave.
Pense en quizas hacer la consulta y mostrar los datos en un DBGrid, y despues verificaar si el grid esta activo y de esta manera saber si hay datos o no, peor no se si se pueda hacer esto...:confused::confused:

Casimiro Notevi 10-06-2010 11:57:03

Las claves pueden ser de más de un campo, puedes hacerlo igualmente.

Bare 11-06-2010 03:35:43

Bien!!!!!!!... :D
 
Que tal, hice los de las claves llave (yo pense que no se podia, jamas lo habia intentado) y funciono...:):)
Pero me quedo una duda, porque si le agregas un dato y lo quieres volver a agregar te da el error de que no se puede duplicar, el problema aqui es que si le cambio algun valor en los combobox y le doy en agregar, no me deja, me sigue marcando el mismo error, y se supone que deberia dejarme, para que me deje tengo que cerrar la aplicacion y volver a abrirla.
No hay algun metodo para que no tenga que reiniciar la aplicacion?, intente con el Form->Refresh y nada....:(

Saludos

Casimiro Notevi 11-06-2010 18:07:42

Evidentemente, si no vemos tu código, poco podemos hacer ;)

Bare 11-06-2010 18:55:17

Aqui Esta
 
jejejejejeje, obvio, jejejeje..:D
aqui esta el codigo:

Código:


Tabla->Open();
Tabla->Insert();

//--------------------------------------------------
Tabla->FieldByName("Casos_sospechosos_colera_est")->AsString = Edit1->Text;
Tabla->FieldByName("casos_diarrea_notif_SUIVE")->AsString = Edit2->Text;
Tabla->FieldByName("casos_sospechosos_coleratrat")->AsString = Edit7->Text;
Tabla->FieldByName("Total_casos_colera")->AsString = Edit8->Text;
Tabla->FieldByName("cepas_positivasvibrio")->AsString = Edit18->Text;
Tabla->FieldByName("Total_muestrasproc")->AsString = Edit19->Text;
Tabla->FieldByName("Deter_cloro")->AsString = Edit26->Text;
Tabla->FieldByName("Total_detercloro")->AsString = Edit27->Text;

//------------------------------------------------------
Tabla->FieldByName("ID_coberturadeteccion")->AsString = Edit3->Text;
Tabla->FieldByName("ID_tratoportuno")->AsString = Edit9->Text;
Tabla->FieldByName("ID_eficiencialab")->AsString = Edit20->Text;
Tabla->FieldByName("ID_cloracionagua")->AsString = Edit28->Text;
//------------------------------------------------------
Tabla->FieldByName("P_coberturadeteccion")->AsString = Edit14->Text;
Tabla->FieldByName("P_tratoportuno")->AsString = Edit15->Text;
Tabla->FieldByName("P_eficiencialab")->AsString = Edit21->Text;
Tabla->FieldByName("P_cloracionagua")->AsString = Edit29->Text;

Tabla->FieldByName("Año")->AsString = ComboBox1->Text;
Tabla->FieldByName("Localidad")->AsString = ComboBox2->Text;
Tabla->FieldByName("Evaluacion")->AsString = ComboBox3->Text;




Tabla->Post();
Application->MessageBox ("Datos Grabados en la BD","Aviso", MB_OK);

//Form1->Refresh();//---ESTO FUE LO QUE INTENTE PERO NADA..:confused:


Casimiro Notevi 11-06-2010 19:54:02

No sé qué componentes o con qué estás trabajando, pero creo que necesitas un commit de la transaction.

Bare 12-06-2010 00:17:31

Estoy trabajando con componentes ADO, me conecto con el ADOConection, enlazo las tablas con ADOTable y DataSource.

Casimiro Notevi 12-06-2010 00:19:43

Pues, lo dicho, seguramente necesitas hacer commit

Bare 12-06-2010 00:25:43

Y eso como se hace?, es dificil? me podrias explicar o darme un ejemplo??--:confused:

Casimiro Notevi 12-06-2010 00:31:46

Yo no uso ADO, pero haz una búsqueda en clubdelphi con esos parámetros, se ha tratado varias ocasiones. Buscar por ADO* transaction

Bare 12-06-2010 02:36:39

Gracias por la info, encontre algunos posts aqui y mas info gogleando.
Muchas Gracias por todo..:D


La franja horaria es GMT +2. Ahora son las 10:25:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi