Ver la Versión Completa : 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:
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 (http://www.clubdelphi.com/foros/showthread.php?t=68352) tema que ha sido tratado hoy, puede servirte.
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.
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 ;)
jejejejejeje, obvio, jejejeje..:D
aqui esta el codigo:
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.
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
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
Gracias por la info, encontre algunos posts aqui y mas info gogleando.
Muchas Gracias por todo..:D
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.