Microstation - Programacion MDL con Base de datos

 
Vista:

Programacion MDL con Base de datos

Publicado por MaxZ (1 intervención) el 19/05/2002 06:42:35
Para los expertos necesito hacer un formulario que me muestre informacion de base de datos de un elemento vinculado, ¿Se puede hacer esto?

Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Programacion MDL con Base de datos

Publicado por Alex (11 intervenciones) el 19/05/2002 09:57:14
Creo que si, pero MicroStation te crea un formulario automaticamente sin necesidad de programar nada, a partir de una base de datos activa. Busca en el menu de base de datos de MicroStation.

No te lo puedo decir exactamente porque no tengo el MicroStation ahora a mano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por carlos (29 intervenciones) el 20/05/2002 14:22:38
Mirate las funciónes:
mdlDBDialog_openFormFromElement y mdlDBDialog_openForm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por maxz (11 intervenciones) el 20/05/2002 15:40:43
Gracias, Carlos, pero sucede que hasta ahora no he desarrollado ninguna aplicacion MDL, no se si podrias enviarme un codigo pero simple, ademas los datos que yo quero mostrar son de tablas relacionadas por eso es que no uso el formulario que te muestra automaticamente, mas o menos asi seria los datos

Nombre de Almacen= (alamacenes.nombre)
productos almacenados:
Producto Cantidad
=================================================
(productos.descripcion) (productos.cantidad)
(productos.descripcion) (productos.cantidad)
(productos.descripcion) (productos.cantidad)
(productos.descripcion) (productos.cantidad)

Suponiendo que el elemento esta vinculado a la tabla edificios y existe una relacion de uno a varios entre la tabla de alamacenes y la tabla productos



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por carlos (29 intervenciones) el 21/05/2002 17:35:04
Si los campos del informe siempre van a ser fijos lo mejor es hacer un cuadro de diálogo que los coja a partir
de los resultados que te den a partir de la consulta "select .....", pero si me dices que no has hecho nada de mdl
hasta ahora va ha ser muy complicado porque tienes que programarlo todo mientras que de la otra forma no
(tambien puedes hacerlo con una macro).

Se me ocurre que el mdl haga lo siguiente:
-Obtén el mslink (y el entitynum , aunque ya sabes que está vinculado a la tabla edificios) del elemento
-lanza la sentencia SQL que cree una vista con la select que relaciona las tablas (con "create view as select.....")
-por último lanza la función mdlDBDialog_openForm con la vista,
te saldránen el formulario los datos de las diferentes tablas relecionadas y podrás editarlos desde ahi.

Si tienes dudas mandame un correo.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por Medio (10 intervenciones) el 22/05/2002 09:29:05
Hola a todos,

Cuánto tiempo, ¿no?. ¿Qué tal Carlos?. Espero verte pronto. JE,JE.

Como yo también soy un poco curioso en estos temas os voy a dejar una función de una de mis aplicaciones donde podréis ver consultas SQL de tablas relacionadas y como se mestran en un ListBox. Es otra forma de hacerlo. Después podéis seleccionar cualquier elemento del ListBox pinchando con el botón de datos mediante un click o dos y os puede mostrar otra información lanzando otra función que os creeis. Esta última parte no está en el código. Se utiliza un StringList (qué es como un array) donde se guardan las consultas SQL y luego se pasa a la función mdlDialog_listBoxSetStrListP. La función es la siguiente:

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por Medio1 (10 intervenciones) el 22/05/2002 09:30:04
void consultaDireccion()
{
char lsql[1024];
int intfila=0;
char *txtTempEmpresa,txtEmpresa[130];
MS_sqlda csql;
ULong ULdireccion;
ULong ULclase,ULparticula,ULdenominacion,ULmunicipio;
char txtNumVia[5],txtCalificador[50],txtDireccionCompleta[250],txtMunicipio[50];

strSalida=mdlStringList_create(0,2); // Nos muestra el resultado final

do
{
strcpy(txtEmpresa,"");
mdlStringList_getMember(&txtTempEmpresa,NULL,strListTemp,intfila*1);
strcpy(txtEmpresa,txtTempEmpresa);

strcpy(lsql,"");
sprintf(lsql,"SELECT DISTINCT id_Direccion FROM EMPRE WHERE mslink = %u AND Empresa like '%s'",ULmslink,txtEmpresa);
if(mdlDB_openCursor(lsql) == SUCCESS)
{
while(mdlDB_fetchRow(&csql) != QUERY_FINISHED) /* Añadimos el valor buscado en SELECT */
{
ULdireccion = (unsigned long) atoi(csql.value[0]);
break;
}
}
mdlDB_closeCursor();
mdlDB_freeSQLDADescriptor(&csql);

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por Medio2 (10 intervenciones) el 22/05/2002 09:32:46
strcpy(lsql,"");
sprintf(lsql,"SELECT DISTINCT Clase, Particula, Denominacion, Numvia, Calificador, municipio FROM Direcciones WHERE id_Direccion = %u",ULdireccion);
if(mdlDB_openCursor(lsql) == SUCCESS)
{
while(mdlDB_fetchRow(&csql) != QUERY_FINISHED) /* Añadimos el valor buscado en SELECT */
{
ULclase = (unsigned long) atoi(csql.value[0]);
ULparticula = (unsigned long) atoi(csql.value[1]);
ULdenominacion = (unsigned long) atoi(csql.value[2]);
strcpy(txtNumVia,csql.value[3]);
strcpy(txtCalificador,csql.value[4]);
ULmunicipio = (unsigned long) atoi(csql.value[5]);
break;
}
}
mdlDB_closeCursor();
mdlDB_freeSQLDADescriptor(&csql);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por Medio3 (10 intervenciones) el 22/05/2002 09:34:04
strcpy(lsql,"");
sprintf(lsql,"SELECT DISTINCT Clases.txtClase, Particulas.txtParticulas, Denominacion.txtDenominacion, municipios.txtMunicipio FROM Clases, Particulas, Denominacion, Municipios WHERE Clases.Id_Clase = %u AND Particulas.Id_Particula = %u AND Denominacion.Id_Denominacion = %u AND Municipios.IdMunicipio = %u",ULclase,ULparticula,ULdenominacion,ULmunicipio);
if(mdlDB_openCursor(lsql) == SUCCESS)
{
while(mdlDB_fetchRow(&csql) != QUERY_FINISHED) /* Añadimos el valor buscado en SELECT */
{
strcpy(txtDireccionCompleta,csql.value[0]); //Clase
strcat(txtDireccionCompleta," ");
strcat(txtDireccionCompleta,csql.value[1]); //Partícula
strcat(txtDireccionCompleta," ");
strcat(txtDireccionCompleta,csql.value[2]); //Denominación
strcat(txtDireccionCompleta,", ");
strcat(txtDireccionCompleta,txtNumVia);
strcat(txtDireccionCompleta," ");
strcat(txtDireccionCompleta,txtCalificador);
strcat(txtDireccionCompleta," ");
strcat(txtDireccionCompleta,csql.value[3]); // Municipio
break;
}
}
mdlDB_closeCursor();
mdlDB_freeSQLDADescriptor(&csql);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programacion MDL con Base de datos

Publicado por Medio4 (10 intervenciones) el 22/05/2002 09:35:08
mdlStringList_insertMember(NULL,strSalida,-1,2);
mdlStringList_setMember(strSalida,intfila*2,txtEmpresa,NULL);
mdlStringList_setMember(strSalida,intfila*2+1,txtDireccionCompleta,NULL);

intfila++;
} while(intfila < numEmpresa); // fin while

diPempresas=mdlDialog_itemGetByTypeAndId(db1,RTYPE_ListBox,LISTBOXID_empresas,0);
mdlDialog_listBoxSetStrListP(diPempresas->rawItemP,strSalida,1);
mdlDialog_itemDraw(db1,diPempresas->itemIndex);
mdlDialog_itemsSynch(db1);
}

Si queréis os mando la función completa en un zip. Saluditos a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar