Error en creación de BD con DAO
Publicado por Juanra (1 intervención) el 06/11/2008 12:09:11
Bueno pues estamos utilizando la tecnología DAO para la creación de bases de datos y en el momento de crear una relación me da el error :
"No se encontró ningún índice único para el campo al que se hace referencia en la tabla principal"
Es una relación de 2 campos que son claves en la tabla principal con 2 campos de otra tabla en la cual también son claves (junto con otro).
Bueno pues en teoría, para este tipo de relaciones, se crean los 2 campos y se añaden al mismo índice tal que así:
'indice de tabla MISIONES
Dim cmis1 As Index
Dim campomi1 As Field
Dim campomi2 As Field
Set cmis1 = mission.CreateIndex("D") 'Creamos indice
Set campomi1 = cmis1.CreateField("CodMision", dbText, 4) 'Creamos campos iguales
Set campomi2 = cmis1.CreateField("ProgramaM", dbText, 4)
cmis1.Fields.Append campomi1 'Añadimos campos al mismo índice
cmis1.Fields.Append campomi2
cmis1.Primary = True 'Marcamos el índice como primero
mission.Indexes.Append cmis1 'Añadimos índice a la tabla
Y para crear la relación con la otra tabla se hacen los 2 campos en la misma relación, que creo que es lo que tengo en el código, pero es donde me da el error.
Lo he probado en access, y en access ese mismo error me lo da si intento crear una relacion con un campo y luego otra con otro...pero si lo hago los 2 a la vez, me lo hace a la perfeccion. El código de la relacion es este:
Dim rprog2 As Relation 'relacion MISIONES-PARTICIPA1
Dim campoxp2 As Field
Dim campoxp3 As Field
Set rprog2 = ong.CreateRelation("R5", "Misiones", "Participa") 'Tabla princ es misiones
'Foreign es Participa
Set campoxp2 = rprog2.CreateField("ProgramaM", dbText, 4) 'Creamos un campo igual
campoxp2.ForeignName = "ProgramaP" 'Nombre que tiene en la Foreign
Set campoxp3 = rprog2.CreateField("CodMision", dbText, 4) 'Mismo para otro campo
campoxp3.ForeignName = "Mision"
rprog2.Fields.Append campoxp2 'Se los añadimos a la relacion
rprog2.Fields.Append campoxp3
ong.Relations.Append rprog2 'Añadimos relacion a bd
Si depuro el error, me da error en la ultima linea del codigo.
Gracias de antemano!!!
"No se encontró ningún índice único para el campo al que se hace referencia en la tabla principal"
Es una relación de 2 campos que son claves en la tabla principal con 2 campos de otra tabla en la cual también son claves (junto con otro).
Bueno pues en teoría, para este tipo de relaciones, se crean los 2 campos y se añaden al mismo índice tal que así:
'indice de tabla MISIONES
Dim cmis1 As Index
Dim campomi1 As Field
Dim campomi2 As Field
Set cmis1 = mission.CreateIndex("D") 'Creamos indice
Set campomi1 = cmis1.CreateField("CodMision", dbText, 4) 'Creamos campos iguales
Set campomi2 = cmis1.CreateField("ProgramaM", dbText, 4)
cmis1.Fields.Append campomi1 'Añadimos campos al mismo índice
cmis1.Fields.Append campomi2
cmis1.Primary = True 'Marcamos el índice como primero
mission.Indexes.Append cmis1 'Añadimos índice a la tabla
Y para crear la relación con la otra tabla se hacen los 2 campos en la misma relación, que creo que es lo que tengo en el código, pero es donde me da el error.
Lo he probado en access, y en access ese mismo error me lo da si intento crear una relacion con un campo y luego otra con otro...pero si lo hago los 2 a la vez, me lo hace a la perfeccion. El código de la relacion es este:
Dim rprog2 As Relation 'relacion MISIONES-PARTICIPA1
Dim campoxp2 As Field
Dim campoxp3 As Field
Set rprog2 = ong.CreateRelation("R5", "Misiones", "Participa") 'Tabla princ es misiones
'Foreign es Participa
Set campoxp2 = rprog2.CreateField("ProgramaM", dbText, 4) 'Creamos un campo igual
campoxp2.ForeignName = "ProgramaP" 'Nombre que tiene en la Foreign
Set campoxp3 = rprog2.CreateField("CodMision", dbText, 4) 'Mismo para otro campo
campoxp3.ForeignName = "Mision"
rprog2.Fields.Append campoxp2 'Se los añadimos a la relacion
rprog2.Fields.Append campoxp3
ong.Relations.Append rprog2 'Añadimos relacion a bd
Si depuro el error, me da error en la ultima linea del codigo.
Gracias de antemano!!!
Valora esta pregunta


0