Optimized GIS for linear projects XVI (Consultas)
SIG optimizado para obras lineales XVI (Queries)
Índice / Index
Como ya se ha comentado, los hormigones son un caso especial, en cuanto se deben seguir las directrices de la EHE o norma de hormigones, en particular el articulado del control de calidad.
El inicio de selección del lote es el siguiente: Estructura y/o tipo de hormigón, después parte y/o elemento y en último lugar según se determine el recorrido (evaluación similar a una desviación de la media) se verificará el tipo de planta y con ese dato el coeficiente a comparar con la resistencia característica:
As already mentioned, the concretes are a special case, as they must follow the guidelines of the EHE or standard concrete, in particular the articles of quality control.
The start of the batch selection is as follows: Structure and / or type of concrete, then part and / or element and ultimately determined according to the route (similar to a deviation of the mean evaluation) plant type is checked and with this data the coefficient to compare the characteristic strength:
Para la determinación del recorrido se necesita el valor de los últimos 30 resultados como mínimo (tal como marca la norma) que se obtienen del conjunto global de resultados ordenados por fecha.
To determine the path the value of the last 30 results minimum required (as indicated in regulations) obtained the overall set of results sorted by date.
SELECT FR28 FROM BD-Hormigón ORDERBY FECHA
SELECT FR28 FROM BD-Concrete ORDERBY DATA
Después, ya obtenido el coeficiente dependiendo de F28[1]..F28[30], se aplica sobre el conjunto:
Then, whether the ratio obtained depending F28 [1] .. F28 [30], is applied to the set:
SELECT * FROM BD-Hormigón WHERE (ESTRUCTURA=[estructura seleccionada]) (AND HORMIGON=[tipo de hormigón seleccionado]) (AND PARTE=[parte seleccionada]) (AND ELEMENTO=[elemento seleccionado]) ORDER BY FECHA.
SELECT * FROM BD-Concrete WHERE (STRUCTUCT=[selected struct]) (AND CONCRETE=[Type of selected concrete]) (AND PARTE=[selected part]) (AND ELEMENTO=[selected element]) ORDER BY DATA
La forma de llevar a cabo estas acciones se puede observar a través de los formularios de las figuras 3.7.3, versión de Visual Basic.
How to perform these actions can be seen through the forms of Figures 3.7.3 version of Visual Basic.
La versión de PHP, es sólo diferente en apariencia. Figura 3.7.3.
PHP version, just different in appearance. Figure 3.7.3.
El siguiente código adjunto corresponde a la versión de VB:
The following code attached corresponds to the version of VB:
Con los datos de los firmes se procede con los mismos criterios de selección que en el caso de las densidades. La única salvedad es la composición del sistema gráfico del Marshall y la composición de las granulometrías. Figuras 3.7.4.
With data from the firm proceeds with the same selection criteria as in the case of densities. The only caveat is the composition of the graphics system of Marshall and composition of the particle sizes. Figures 3.7.4.
El desarrollo se resuelve según las siguientes subrutinas:
The development is solved according to the following subroutines:
La selección y/o búsqueda de inspecciones son de forma intersectante. Es decir, que confluyan varias condiciones de búsqueda. Son una excelente ayuda a la hora de realizar informes parciales del estado de la obra, ya que no sólo se encuentra la información sino que al mismo tiempo se realiza la consulta y el informe, ahorrando gran cantidad de tiempo
The selection and / or search form inspections are intersecting. That is, they converge multiple search conditions. They are a great help when performing partial reports the status of the work, since not only information but is simultaneously the query and the report is made, saving considerable time
Continuará ...
SIG optimizado para obras lineales XVI (Queries)
Índice / Index
1.- Introducción
1.1.- Situación actual
1.2.- Problemática detectada y justificación del trabajo
1.3.- Objetivos
1.4.- Estructura del estudio
2.- Estado del conocimiento
2.1.- La topografía en la obra lineal
2.1.1.- Elementos básicos de documentación topográfica
2.1.2.- Composición de los elementos básicos del trazado
2.1.3.- Software habitual para definición de trazados en obras lineales
2.2.- Formatos de dibujo
2.2.1.- El formato dxf
2.2.2.- El formato vml
2.2.3.- El formato svg
2.2.4.- El formato dwg
2.3.- La información documentada de obra
2.4.- Sistemas de información geográfica
2.4.1.- Revisión de programas de gis estándar
2.4.2.- Revisión de programas de gis que no siguen los estándares
2.5.- Tipos de lenguajes de programación
2.5.1.- Lenguajes de bajo nivel
2.5.2.- Lenguajes de nivel medio
2.5.3.- Lenguajes de alto nivel
2.6.- Tipos de bases de datos
2.6.1.- Sql, la comunicación entre bases de datos relacionales
2.7.- Los sistemas de representación gráfica tradicionales
2.8.- Normativa aplicable
3.- Solución
3.1.- Lectura de elementos topográficos: trazado y estructuras
3.1.1.- Elementos topográficos del trazado: eje
3.1.2.- Elementos topográficos del trazado: terreno
3.1.3.- Elementos topográficos del trazado: plataforma
3.1.4.- Elementos topográficos anejos al trazado: las estructuras
3.2.- Lectura de bases de datos
3.2.1.- Bases de datos de ensayos e inspección
3.2.1.1.- Bases de datos de ensayos, suelos
3.2.1.2.- Bases de datos de ensayos, densidades
3.2.1.3.- Bases de datos de ensayos, mezclas bituminosas
3.2.1.4.- Bases de datos de ensayos, hormigones
3.2.1.5.- Bases de datos de inspección, control
3.2.1.6.- Bases de datos de inspección, diario
3.2.2.- Bases de datos extras
3.2.2.1.- Bases de datos extras, fotos
3.2.2.2.- Bases de datos extras, definición de estructuras
3.2.2.3.- Bases de datos extras, definición de la capa de firme
3.2.2.4.- Bases de datos extras, localización extra
3.3.- El dibujo del trazado
3.3.1.- El dibujo en planta
3.3.2.- El dibujo en perspectiva
3.3.2.1.- El dibujo con superficies planas
3.3.2.2.- El dibujo en el navegador
3.4.- La unión del trazado con las bases de datos
3.4.1.- La unión de las estructuras al trazado
3.4.2.- La unión de los ensayos de suelos al trazado
3.4.3.- La unión de los ensayos de densidades al trazado
3.4.4.- La unión de los ensayos de hormigones al trazado
3.4.5.- La unión de los ensayos de firmes al trazado
3.4.6.- La unión de los inspecciones de control al trazado
3.4.7.- La unión del diario al trazado
3.4.8.- La unión de la documentación fotográfica al trazado
3.5.- La unión de la documentación y otras inspecciones
3.5.1.- La unión pasiva
3.5.2.- La unión activa
3.6.- Base matemática novedosa utilizada
3.6.1.- Pseudo-bases de datos
3.6.2.- Redes de taylor multidimensionales
3.6.3.- Sintegrales
3.7.- Consultas a la información a través de formularios
3.7.1.- Formularios de ensayos de suelos
3.7.2.- Formularios de ensayos de densidades
3.7.3.- Formularios de ensayos de hormigones
3.7.4.- Formularios de ensayos de firmes
3.7.5.- Formulario de inspecciones, control
3.7.6.- Formulario de inspecciones, diario
3.7.7.- Formulario de inspecciones, fotos
3.7.8.- Formulario de seguimiento en dxf y kml
3.8.- Resultados finales
4.- Conclusiones, futuras lineas de trabajo
5.- Bibliografía
3.7.3.- FORMULARIOS DE ENSAYOS DE HORMIGONES / TEST OF CONCRETE FORMS
Como ya se ha comentado, los hormigones son un caso especial, en cuanto se deben seguir las directrices de la EHE o norma de hormigones, en particular el articulado del control de calidad.
El inicio de selección del lote es el siguiente: Estructura y/o tipo de hormigón, después parte y/o elemento y en último lugar según se determine el recorrido (evaluación similar a una desviación de la media) se verificará el tipo de planta y con ese dato el coeficiente a comparar con la resistencia característica:
As already mentioned, the concretes are a special case, as they must follow the guidelines of the EHE or standard concrete, in particular the articles of quality control.
The start of the batch selection is as follows: Structure and / or type of concrete, then part and / or element and ultimately determined according to the route (similar to a deviation of the mean evaluation) plant type is checked and with this data the coefficient to compare the characteristic strength:
Para la determinación del recorrido se necesita el valor de los últimos 30 resultados como mínimo (tal como marca la norma) que se obtienen del conjunto global de resultados ordenados por fecha.
To determine the path the value of the last 30 results minimum required (as indicated in regulations) obtained the overall set of results sorted by date.
SELECT FR28 FROM BD-Hormigón ORDERBY FECHA
SELECT FR28 FROM BD-Concrete ORDERBY DATA
Después, ya obtenido el coeficiente dependiendo de F28[1]..F28[30], se aplica sobre el conjunto:
Then, whether the ratio obtained depending F28 [1] .. F28 [30], is applied to the set:
SELECT * FROM BD-Hormigón WHERE (ESTRUCTURA=[estructura seleccionada]) (AND HORMIGON=[tipo de hormigón seleccionado]) (AND PARTE=[parte seleccionada]) (AND ELEMENTO=[elemento seleccionado]) ORDER BY FECHA.
SELECT * FROM BD-Concrete WHERE (STRUCTUCT=[selected struct]) (AND CONCRETE=[Type of selected concrete]) (AND PARTE=[selected part]) (AND ELEMENTO=[selected element]) ORDER BY DATA
La forma de llevar a cabo estas acciones se puede observar a través de los formularios de las figuras 3.7.3, versión de Visual Basic.
How to perform these actions can be seen through the forms of Figures 3.7.3 version of Visual Basic.
3.7.3: Diversas vistas de preselección de lotes de hormigón 3.7.3: Different views preset batch of concrete |
PHP version, just different in appearance. Figure 3.7.3.
Figura 3.7.3: Diversas vistas de preselección de lotes de hormigón Figure 3.7.3: Different views preset batch of concrete |
The following code attached corresponds to the version of VB:
Sub
Hormigonea(Button As Integer, Shift As Integer, X As Single, Y As
Single)
DataHormigon.Refresh
DataHormigon.Recordset.MoveLast
ndatos
= DataHormigon.Recordset.RecordCount
paso
= (Ancho - 500 - 800) / ndatos
DataHormigon.Recordset.MoveFirst
Series_ENM
= 0: Series_Constructora = 0: Series_Conj = 0
Max_ENM
= 0: Max_Constructora = 0: Max_Conj = 0
Min_ENM
= 1000: Min_Constructora = 1000: Min_Conj = 1000
Medias_ENM
= 0: Medias_Constructora = 0: Medias_Conj = 0
sumap
= 0: sumae = 0
For
X = (800 + paso / 2) To Ancho - 501 Step paso
If
X = (800 + paso / 2) Then DataHormigon.Recordset.MoveFirst Else
DataHormigon.Recordset.MoveNext
res
= Cuanto_es(DataHormigon.Recordset(11))
abba
= M * res + N / 10
If
UCase(DataHormigon.Recordset(6)) = "ELLOS" Then
color1
= QBColor(9)
Series_Constructora =
Series_Constructora + 1
'Esta
parte pertenece al cálculo del recorrido, concepto explicando en la
EHE, e imprescindible para la validación de resultados
If
res > Cuanto_es(Max_Constructora) Then Max_Constructora = res
If
res < Cuanto_es(Min_Constructora) Then Min_Constructora = res
sumap
= sumap + res
Else
color1
= QBColor(12)
Series_ENM
= Series_ENM + 1
If
res > Cuanto_es(Max_ENM) Then Max_ENM = res
If
res < Cuanto_es(Min_ENM) Then Min_ENM = res
sumae
= sumae + res
End
If
Series_Conj
= Series_Conj + 1
If
res > Cuanto_es(Max_Conj) Then Max_Conj = res
If
res < Cuanto_es(Min_Conj) Then Min_Conj = res
Picture1.Circle
(X, abba), 20, color1: Picture1.CurrentX = X + 20
Picture1.CurrentY = abba –
50: Picture1.ForeColor = color1
Nombre
= DataHormigon.Recordset("PARTE")
If
IsNull(Nombre) Then Nombre = DataHormigon.Recordset("ELEMENTO")
If
IsNull(Nombre) Then Nombre = ""
If
DataHormigon.Recordset(3) = "OD" Then Picture1.Print "OD-";
If
DataHormigon.Recordset(3) = "TRAZA" Then Picture1.Print
"Sifón: ";: Nombre = "Pk." +
Format(DataHormigon.Recordset("PK"), "0+000")
Picture1.Print
Nombre
Next
X
Picture1.DrawWidth
= 2
Medias_Constructora
= Forma00(sumap / Series_Constructora)
res
= Cuanto_es(Medias_Constructora)
abba
= M * res + N / 10
Picture1.Line
(600, abba)-(Ancho - 300, abba), QBColor(9)
Picture1.DrawWidth
= 2
If
Series_ENM <> 0 Then Medias_ENM = Forma00(Str(sumae /
Series_ENM)) Else Medias_ENM = "0,00"
res
= Cuanto_es(Medias_ENM): abba = M * res + N / 10
Picture1.Line
(600, abba)-(Ancho - 300, abba), QBColor(12)
Medias_Conj
= Forma00((sumap + sumae) / Series_Conj)
Max_ENM
= Forma00(Cuanto_es(Max_ENM))
Max_ConstConstructora
= Forma00(Cuanto_es(Max_Constructora))
Max_Conj
= Forma00(Cuanto_es(Max_Conj))
If
Min_ENM = 1000 Then Min_ENM = 0
If
Min_Constructora = 1000 Then Min_Constructora = 0
If
Min_Conj = 1000 Then Min_Conj = 0
Min_ENM
= Forma00(Cuanto_es(Min_ENM)): Min_Constructora =
Forma00(Cuanto_es(Min_Constructora))
Min_Conj
= Forma00(Cuanto_es(Min_Conj))
Porc_Contr
= Forma0s(Cuanto_es(Series_ENM) / Cuanto_es(Series_Conj))
Rec_Max
= Forma00((Cuanto_es(Max_Conj) - Cuanto_es(Min_Conj)) /
Cuanto_es(Medias_Conj))
KN
= KsubN(Cuanto_es(Rec_Max))
nn
= Cuanto_es(Series_Conj)
If
nn > 6 Then
Fest
= Forma00(KN * Cuanto_es(Min_Conj))
Else
If
nn / 2 = Int(nn / 2) Then tope = nn / 2 - 1 Else tope = (nn - 1) / 2
- 1
DataHormigon.RecordSource =
Left(DataHormigon.RecordSource, Len(DataHormigon.RecordSource) - 8) +
" FM28"
DataHormigon.Refresh:
DataHormigon.Recordset.MoveFirst
suma
= 0
For
I = 1 To tope
cuan
= Cuanto_es(DataHormigon.Recordset(11)): suma = suma + cuan
DataHormigon.Recordset.MoveNext
Next
I
f1
= 2 * suma / tope – Cuanto_es(Medias_Conj): f2 = KN *
Cuanto_es(Min_Conj)
If
f1 > f2 Then Fest = Forma00(f1) Else Fest = Forma00(f2)
End
If
Fck09
= Int(Cuanto_es(DataHormigon.Recordset(7))) * 0.9
Diagnostico.FontBold
= True
If
Cuanto_es(Fck09) < Cuanto_es(Fest) Then Diagnostico.ForeColor =
QBColor(9): Diagnostico = "Conforme" Else Diagnostico = "No
Conforme": Diagnostico.ForeColor = QBColor(12)
Picture1.DrawWidth
= 2
FCK100
= Int(Fck09 / 0.9 + 0.5): res = FCK100 : abba = M * res + N
Picture1.Line
(mizdo + 600, abba)-(mizdo + Ancho - 300, abba), QBColor(2)
End
Sub
3.7.4.- FORMULARIOS DE ENSAYOS DE FIRMES / FORMS OF TESTING PAVEMENT
Con los datos de los firmes se procede con los mismos criterios de selección que en el caso de las densidades. La única salvedad es la composición del sistema gráfico del Marshall y la composición de las granulometrías. Figuras 3.7.4.
With data from the firm proceeds with the same selection criteria as in the case of densities. The only caveat is the composition of the graphics system of Marshall and composition of the particle sizes. Figures 3.7.4.
Figura 3.7.4: Diversas preselecciones de tramos de MBC en VB (fondo negro) y PHP Figure 3.7.4: Different presets sections of MBC in VB (black background) and PHP |
El desarrollo se resuelve según las siguientes subrutinas:
The development is solved according to the following subroutines:
Private
Sub Aglomerador()
DataAglo.RecordSource
= "SELECT DISTINCT sector FROM [" + DBT_Aglomera + "]"
DataAglo.Refresh
DataAglo.Recordset.MoveFirst
Do
pepote
= DataAglo.Recordset(0)
If
Not IsNull(pepote) Then Combo1.AddItem pepote
DataAglo.Recordset.MoveNext
Aglomera
1, 1, 1, 1
Loop
Until DataAglo.Recordset.EOF
Dim
I As Integer
'Carga_Ejes
End
Sub
Private
Sub Aglomera(Button As Integer, Shift As Integer, X As Single, Y As
Single)
'=================================================
'
MARSHALL
'=================================================
If Combo2 = "Todas"
Then
BDConjunta = "SELECT *
FROM [" + DBT_Aglomera + "] WHERE SECTOR = '" &
Combo1 & "' AND (PK BETWEEN " &
Trim(Cuanto_es(Combo3)) & " AND " &
Trim(Cuanto_es(Combo4)) & ")"
Else
BDConjunta = "SELECT *
FROM [" + DBT_Aglomera + "] WHERE PROCEDENCI = '" &
Combo2 & "' AND (SECTOR = '" & Combo1 & "'
AND PK BETWEEN " & Trim(Cuanto_es(Combo3)) & " AND
" & Trim(Cuanto_es(Combo4)) & ")"
End If
DataAglo.RecordSource =
BDConjunta
If Combo6 <> "Todas"
Then DataAglo.RecordSource = DataAglo.RecordSource & " AND
CAPA = '" & Combo6 & "'"
DataAglo.Refresh
DataAglo.Recordset.MoveFirst
capote =
UCase(DataAglo.Recordset("MEZCLA"))
If capote Like "*D*"
And capote Like "*12*" Then Combo5 = "MBC D-12"
If capote Like "*D*"
And capote Like "*20*" Then Combo5 = "MBC D-20"
If capote Like "*S*"
And capote Like "*12*" Then Combo5 = "MBC S-12"
If capote Like "*S*"
And capote Like "*20*" Then Combo5 = "MBC S-20"
If capote Like "*S*"
And capote Like "*25*" Then Combo5 = "MBC S-25"
If capote Like "*G*"
And capote Like "*20*" Then Combo5 = "MBC G-20"
If capote Like "*G*"
And capote Like "*25*" Then Combo5 = "MBC G-25"
If capote Like "*PA*"
And capote Like "*12*" Then Combo5 = "MBC PA-12"
If capote Like "*F*"
And capote Like "*10*" Then Combo5 = "MBC F-10"
Actuar_Picos
If Option3 Then
ChivAglo =
DataAglo.RecordSource
DataAglo.RecordSource =
ChivAglo + " AND lcase(EJECUTA) = 'ellos'"
DataAglo.Refresh
GranContratista
DataAglo.RecordSource =
ChivAglo + " AND lcase(EJECUTA) = 'nosotros'"
DataAglo.Refresh
GranContraste
DataAglo.RecordSource =
ChivAglo
DataAglo.Refresh
End If
If Option1 Then
ChivAglo =
DataAglo.RecordSource
DataAglo.RecordSource =
ChivAglo + " AND EJECUTA = 'Ellos'" : DataAglo.Refresh
GranContratista
DataAglo.RecordSource =
ChivAglo : DataAglo.Refresh
End If
If Option2 Then
ChivAglo =
DataAglo.RecordSource : DataAglo.RecordSource = ChivAglo + " AND
EJECUTA = 'Nosotros'"
DataAglo.Refresh
GranContraste
DataAglo.RecordSource =
ChivAglo : DataAglo.Refresh
End If
End
Sub
Sub
Actuar_Picos()
'Iniciación
de gráficas, puesta a cero
PicD.Cls: Dmaxima = 0: Dminima
= 10000: Dmedia = 0
PicE.Cls: Emaxima = 0: Eminima
= 10000: Emedia = 0
PicF.Cls: Fmaxima = 0: Fminima
= 10000: Fmedia = 0
PicA.Cls: Amaxima = 0: Aminima
= 10000: Amedia = 0
PicM.Cls: Mmaxima = 0: Mminima
= 10000: Mmedia = 0
PicR.Cls: Rmaxima = 0: Rminima
= 10000: Rmedia = 0
PicD.ScaleTop = 2.6:
PicD.ScaleHeight = -0.5
PicE.ScaleTop = 2350:
PicE.ScaleHeight = -2000
PicF.ScaleTop = 4.5:
PicF.ScaleHeight = -3.7
PicA.ScaleTop = 20:
PicA.ScaleHeight = -15
PicM.ScaleTop = 10:
PicM.ScaleHeight = -11.4
PicR.ScaleTop = 97:
PicR.ScaleHeight = -60
BMaxima = 0: Bminima = 10000:
Bmedia = 0
Mmaxima = 0: Mminima = 10000:
Mmedia = 0
Zmaxima = 0: Zminima = 10000:
Zmedia = 0
FBMaxima = 0: FBminima = 10000:
FBmedia = 0
NEnsayos = 0: NExtracciones = 0
PK1 = Cuanto_es(Combo3)
PK2 = Cuanto_es(Combo4)
For I = 3 To 5.5 Step 0.5
If I = 3 Then
PicR.DrawWidth = 2: PicA.DrawWidth = 2: PicM.DrawWidth = 2:
PicD.DrawWidth = 2: PicE.DrawWidth = 2: PicF.DrawWidth = 2 Else
PicD.DrawWidth = 1: PicE.DrawWidth = 1: PicF.DrawWidth = 1:
PicA.DrawWidth = 1: PicM.DrawWidth = 1: PicR.DrawWidth = 1
ozi = Forma0s(I / 100)
PicD.Line (I, 2.18)-(I,
2.55) : PicD.CurrentX = I – 0.15 : PicD.CurrentY = 2.15 :
PicD.Print ozi
PicE.Line (I, 700)-(I, 2200)
: PicE.CurrentX = I – 0.15 : PicE.CurrentY = 550 : PicE.Print ozi
PicF.Line (I, 1.35)-(I, 4.2)
: icF.CurrentX = I – 0.15 : PicF.CurrentY = 1.13 : PicF.Print ozi
PicA.Line (I, 7.8)-(I, 18.7)
PicA.CurrentX = I – 0.15 PicA.CurrentY = 6.5 PicA.Print ozi
PicM.Line (I, 0.6)-(I, 9.3)
PicM.CurrentX = I – 0.15 PicM.CurrentY = -0.2 '2.8 PicM.Print ozi
PicR.Line (I, 48)-(I, 92)
PicR.CurrentX = I – 0.15 PicR.CurrentY = 43 PicR.Print ozi
Next I
For I = 2.2 To 2.6 Step 0.1
If I = 2.2 Then
PicD.DrawWidth = 2 Else PicD.DrawWidth = 1
PicD.Line (2.8, I)-(5.6, I)
PicD.CurrentX = 2.2:
PicD.CurrentY = I + 0.02: PicD.Print I
Next I
For I = 750 To 2000 Step 250
If I = 750 Then
PicE.DrawWidth = 2 Else PicE.DrawWidth = 1
PicE.Line (2.8, I)-(5.6, I)
PicE.CurrentX = 2.2:
PicE.CurrentY = I + 75: PicE.Print I
Next I
For I = 1.5 To 4 Step 0.5
If I = 1.5 Then
PicF.DrawWidth = 2 Else PicF.DrawWidth = 1
PicF.Line (2.8, I)-(5.6, I)
PicF.CurrentX = 2.2:
PicF.CurrentY = I + 0.12: PicF.Print Forma0(I)
Next I
For I = 8 To 18 Step 2
If I = 8 Then
PicA.DrawWidth = 2 Else PicA.DrawWidth = 1
PicA.Line (2.8, I)-(5.6, I)
PicA.CurrentX = 2.2:
PicA.CurrentY = I + 0.5: PicA.Print I
Next I
For I = 1 To 9 Step 1
If I = 1 Then
PicM.DrawWidth = 2 Else PicM.DrawWidth = 1
PicM.Line (2.8, I)-(5.6, I)
If I = Int(I) Then
PicM.CurrentX = 2.2: PicM.CurrentY = I + 0.3: PicM.Print I
Next I
For I = 50 To 90 Step 10
If I = 50 Then
PicR.DrawWidth = 2 Else PicR.DrawWidth = 1
PicR.Line (2.8, I)-(5.6, I)
PicR.CurrentX = 2.2:
PicR.CurrentY = I + 1: PicR.Print I
Next I
DataAglo.Recordset.MoveFirst
Do
uf =
DataAglo.Recordset("bmezcla")
If Not IsNull(uf) Then
zplof = Cuanto_es(uf)
If zplof >
Cuanto_es(Zmaxima) Then Zmaxima = Forma00(zplof)
If zplof <
Cuanto_es(Zminima) Then Zminima = Forma00(zplof)
Zmedia =
Forma00(Cuanto_es(Zmedia) + zplof)
End If
uf =
DataAglo.Recordset("relfb")
If Not IsNull(uf) Then
fbplof = Cuanto_es(uf)
If fbplof >
Cuanto_es(FBMaxima) Then FBMaxima = Forma00(fbplof)
If fbplof <
Cuanto_es(FBminima) Then FBminima = Forma00(fbplof)
FBmedia =
Forma00(Cuanto_es(FBmedia) + fbplof)
End If
uf =
DataAglo.Recordset("densi")
If Not IsNull(uf) Then
dplof = Cuanto_es(uf)
PicD.Circle (bplof,
dplof), 0.03, CPLOF
If dplof >
Cuanto_es(Dmaxima) Then Dmaxima = Forma00(dplof)
If dplof <
Cuanto_es(Dminima) Then Dminima = Forma00(dplof)
Dmedia =
Forma00(Cuanto_es(Dmedia) + dplof)
NEnsayos = NEnsayos + 1
End If
uf =
DataAglo.Recordset("estabili")
If Not IsNull(uf) Then
eplof = Cuanto_es(uf)
PicE.Circle (bplof,
eplof), 0.03, CPLOF
If eplof >
Cuanto_es(Emaxima) Then Emaxima = Int(eplof)
If eplof <
Cuanto_es(Eminima) Then Eminima = Int(eplof)
Emedia =
Int(Cuanto_es(Emedia) + eplof)
End If
uf =
DataAglo.Recordset("deforme")
If Not IsNull(uf) Then
fplof = Cuanto_es(uf)
PicF.Circle (bplof,
fplof), 0.03, CPLOF
If fplof >
Cuanto_es(Fmaxima) Then Fmaxima = Forma00(fplof)
If fplof <
Cuanto_es(Fminima) Then Fminima = Forma00(fplof)
Fmedia =
Forma00(Cuanto_es(Fmedia) + fplof)
End If
uf =
DataAglo.Recordset("porcha")
If Not IsNull(uf) Then
aplof = Cuanto_es(uf)
PicA.Circle (bplof,
aplof), 0.03, CPLOF
If aplof >
Cuanto_es(Amaxima) Then Amaxima = Forma00(aplof)
If aplof <
Cuanto_es(Aminima) Then Aminima = Forma00(aplof)
Amedia =
Forma00(Cuanto_es(Amedia) + aplof)
End If
uf =
DataAglo.Recordset("porchm")
If Not IsNull(uf) Then
mplof = Cuanto_es(uf)
PicM.Circle (bplof,
mplof), 0.03, CPLOF
If mplof >
Cuanto_es(Mmaxima) Then Mmaxima = Forma00(mplof)
If mplof <
Cuanto_es(Mminima) Then Mminima = Forma00(mplof)
Mmedia =
Forma00(Cuanto_es(Mmedia) + mplof)
End If
uf =
DataAglo.Recordset("porchrell")
If Not IsNull(uf) Then
rplof = Cuanto_es(uf)
PicR.Circle (bplof,
rplof), 0.03, CPLOF
If rplof >
Cuanto_es(Rmaxima) Then Rmaxima = Forma00(rplof)
If rplof <
Cuanto_es(Rminima) Then Rminima = Forma00(rplof)
Rmedia =
Forma00(Cuanto_es(Rmedia) + rplof)
End If
DataAglo.Recordset.MoveNext
Loop Until
DataAglo.Recordset.EOF
Bmedia = Forma00(Bmedia /
Nextracciones) : Zmedia = Forma00(Zmedia / Nextracciones) : FBmedia =
Forma00(FBmedia / NExtracciones)
Dmedia = Forma00(Dmedia /
Nensayos) : Emedia = Int(Emedia / Nensayos) : Fmedia = Forma00(Fmedia
/ NEnsayos)
Amedia = Forma00(Amedia /
Nensayos) : Mmedia = Forma00(Mmedia / Nensayos) : Rmedia =
Forma00(Rmedia / NEnsayos)
'=================================================
'
GRANULOMETRÍAS
'=================================================
PintaGrano.ScaleLeft = 2.1
PintaGrano.ScaleWidth = -3.3
PintaGrano.Cls
For I = 0 To 100 Step 10
If I = 0 Or I = 100 Then
PintaGrano.DrawWidth = 2 Else PintaGrano.DrawWidth = 1
PintaGrano.Line (1.85,
I)-(-1.17, I)
PintaGrano.CurrentX = 2.04
PintaGrano.CurrentY = I + 2
PintaGrano.Print Trim(I) +
" %"
Next I
PintaGrano.DrawWidth = 1
pet = 1000
For I = 1 To 5
pet = pet / 10
For j = pet To pet / 10
Step -pet / 10
If j < 70 Then
HU = Log(j) / Log(10)
PintaGrano.Line (HU,
-2)-(HU, 102)
PintaGrano.CurrentX = HU
PintaGrano.CurrentY = -5
' PintaGrano.Print
Int(j)
End If
Next j
Next I
PintaGrano.DrawWidth = 2
j = 50: HU = Log(j) / Log(10):
PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU + 0.05:
PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 40: HU = Log(j) / Log(10):
PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU + 0.05:
PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 25: HU = Log(j) / Log(10):
PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU + 0.05:
PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 12.5: HU = Log(j) /
Log(10): PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU
+ 0.05: PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 10: HU = Log(j) / Log(10):
PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU + 0.05:
PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 5: HU = Log(j) / Log(10):
PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU + 0.05:
PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 2.5: HU = Log(j) / Log(10):
PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU + 0.05:
PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 1.25: HU = Log(j) /
Log(10): PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU
+ 0.05: PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 0.63: HU = Log(j) /
Log(10): PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU
+ 0.05: PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 0.32: HU = Log(j) /
Log(10): PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU
+ 0.05: PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 0.16: HU = Log(j) /
Log(10): PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU
+ 0.05: PintaGrano.CurrentY = -5: PintaGrano.Print j
j = 0.08: HU = Log(j) /
Log(10): PintaGrano.Line (HU, -2)-(HU, 102): PintaGrano.CurrentX = HU
+ 0.05: PintaGrano.CurrentY = -5: PintaGrano.Print j
End
Sub
3.7.5.- FORMULARIO DE INSPECCIONES, CONTROL / FORM OF INSPECTION, CONTROL
La selección y/o búsqueda de inspecciones son de forma intersectante. Es decir, que confluyan varias condiciones de búsqueda. Son una excelente ayuda a la hora de realizar informes parciales del estado de la obra, ya que no sólo se encuentra la información sino que al mismo tiempo se realiza la consulta y el informe, ahorrando gran cantidad de tiempo
The selection and / or search form inspections are intersecting. That is, they converge multiple search conditions. They are a great help when performing partial reports the status of the work, since not only information but is simultaneously the query and the report is made, saving considerable time
Continuará ...
To be continued ...
No hay comentarios:
Publicar un comentario