Lenguaje de Programacion III
Lenguaje de Programacion III
Lenguaje de Programacion III
DESARROLLO
DE SOFTWARE
MANUAL DE APRENDIZAJE
LENGUAJE DE
PROGRAMACIÓN III
CÓDIGO: 89001709
Profesional Técnico
LENGUAJE DE PROGRAMACIÓN III
ÍNDICE
TAREA
CONTENIDO N° PÁG.
N°
ESTABLECER LO SFUNDAMENTOS DE LA PROGRAMACIÓN ORIENTADA
I. 6
A OBJETOS (POO).
1.1. Definir el concepto de POO. 6
1.2. Configurar objetos ADO.NET en una aplicación Windows Forms. 11
1.3. Diseñar bibliotecas de clases con Visual BASIC.NET 24
II. ACCEDER A BASES DEDATOS UTUILIZANDO VISUAL BASIC.NET 45
2.1. Acceder a bases de datos utilizando VISUAL BASIC.NET 45
2.2. Acceder y manipular datos utilizando DATASET. 63
2.3. Configurar y utilizar controles de datos de VISUALBASIC.NET 69
2.4. Desarrollar casos prácticos de controles con acceso a datos. 75
CONFIGURAR LAS IMPRESIONES Y REPORTES EN APLICACIONES
III. 90
WINDOWS FORM.
3.1. Imprimir desde una aplicación Windows Form. 90
3.2. Configurar los diálogos de impresión y configuración de página. 93
3.3. Reportes con Report Manager. 101
IV. ACCEDER AL SISTEMA DE ARCHIVOS. 140
4.1. Trabajar con unidades de disco, carpetas y archivos. 140
4.2. Obtener las propiedades de una carpeta o archivo. 158
4.3. Comprimir y descomprimir archivos con VisualBasic.NET (VBN). 164
V. ELABORAR PRUEBAS Y DEPURCIÓN DE ERRORES. 168
5.1. Depurar paso a paso los procedimientos. 168
5.2. Establecer puntos de ruptura. 170
5.3. Manejar las excepciones con TRY…CATCH 173
5.4. Capturar errores para realizar el análisis respectivo. 178
5.5. Elaborar ejercicios prácticos de casos con VBN. 182
VI. DISTRIBUIIR LAS APLICACIONES WINDOWS ELABORADAS CON VBN. 201
6.1. Crear un proyecto de instalación utilizando el asistente. 201
6.2. Crear accesos directos en el escritorio y menú del usuario activo. 210
6.3. Desarrollar aplicaciones con conexión remota. 211
ELABORAR APLICACIONES WEB CON CONEXIÓN A BASE DE DATOS CON
VII 215
PHP.
7.1. Configurar el servidor Apache de PHP. 215
7.2. Reconocer el lenguaje PHP. 220
7.3. Programar las instrucciones básicas condicionales y repetitivas de
221
PHP.
7.4. Crear formularios que proceden datos con PHP. 228
7.5. Elaborar un Crud a la base de datos. 235
OPERACIONES:
- Definir el Concepto de POO.
- Configurar Objetos ADO .Net en una Aplicación Windows Forms.
- Diseñar Biblioteca de Clases con Visual Basic.Net
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
Los atributos del objeto que vienen a ser el estado y lo que el objeto puede
hacer que vendría a ser su comportamiento están expresados por las variables
y los métodos que componen el objeto respectivamente. Por ejemplo, un objeto
podría ser un Auto el cual tendría como estado actual su velocidad de 50 km/h,
y su aceleración podría aumentar a 60 km/h en 5 segundos; Estas variables se
conocen como variables instancia o variables miembro porque contienen el
estado del objeto Auto y, en programación orientada a objetos, un objeto
particular se denomina Instancia.
Además de estas variables, el objeto Auto podría tener métodos para frenar,
cambiar la velocidad, y cambiar de marcha (el Auto no tendría que tener un
método para cambiar su velocidad pues ésta es función de la caja de cambios
y del acelerador, la marcha en la que está y de si los frenos están siendo
utilizados o no, entre otros muchos factores). Estos métodos se denominan
formalmente métodos instancia o métodos miembro, ya que cambian el estado
de una instancia u objeto Auto particular.
Con la POO se puede aprender a pensar las cosas de una manera distinta,
para escribir los programas en términos de objetos, propiedades y métodos
principalmente.
miAuto.color = Azul
ADO.NET: ActiveX Data Objects para .Net; incluye un conjunto de clases que
proporcionan servicio de acceso a Bases de Datos. Muchas de las aplicaciones
y distribuciones trabajan sobre bases de datos, es por ello que Microsoft
decidió crear una tecnología de acceso a datos muy potente. ADO.Net no
depende de conexiones continuamente activas, ya que se diseñó en torno a
una arquitectura donde las aplicaciones se conectan a una base de datos
durante el tiempo necesario para poder leer o manipular la información, de esta
manera la base de datos no contiene conexiones que se encuentren inactivas e
improductivas por un tiempo innecesario, lo que permite dar servicio a muchos
más usuarios y facilitar su escalabilidad dentro de la aplicación.
Aplicación
Adaptador Conexión Origen de
ASP.Net y Formularios
Formularios Windows
Web
System.Data
Conjunto de Datos
Bases de Datos
Manejo de Capas:
Conjunto de Datos:
Un Formulario WindowsForm, para acceder a los datos de un origen de datos,
lo que realiza es utilizar un adaptador de datos para leer la información de la
base de datos y poder almacenarla en un conjunto de datos. También se puede
interactuar directamente con la base de datos utilizando un objeto de órdenes
para acceso a los datos, que incluya una sentencia SQL o una referencia a un
procedimiento almacenado. Un conjunto de datos puede incluir una o más
tablas que se basan en el origen de datos, así mismo guarda información sobre
las relaciones entre ellas y las restricciones. Estas partes se muestran al
programador mediante propiedades y colecciones. El componente principal
para la arquitectura sin conexión es la clase de objetos DataSet (Conjunto de
Datos) que pertenece al espacio System.Data que se podrá utilizar con
diferentes orígenes de datos. DataSet incluye la colección DataTableCollection
de objetos DataTable (Filas de las Tablas), a la cual se podrá tener acceso a
través de la propiedad Tables del DataSet y la colección DataRelationColletion
del objeto DataRelation (Relaciones entre tablas). Así mismo la clase
DataTable incluye la colección DataRowCollection de objetos DataRow (Filas
de las Tablas), la colección DataColumnCollection de objetos DataColumn
(Columna de Datos) y la colección ConstraintCollection de objetos Constraint
(Restricciones). La representación de un DataSet seria de la siguiente manera:
DataSet
DataTableCollection
DataTable
DataRowCollection
DataRow
DataColumnCollection
DataColumn
ConstraintCollection
Constraint
DataRelationCollection
DataRelation
Proveedor de Datos:
Teniendo en cuenta el .Net Framework, un proveedor de datos es utilizado
como puente entre una aplicación y un origen de datos, que se podrá utilizar
para recuperar datos desde el origen de datos para poder actualizarlos. Los
componentes principales de un proveedor de datos .Net son:
Connection DataAdapter
Transaction SelectComman
InsertCommand
Command
Parameters UpdateComman
DeleteComman
DataReader
.Net incluye los proveedores de datos ODBC, OLE DB, Oracle y SQL Server,
que se utilizan mediante los espacios System.Data.Odbc, System.Data.OleDb,
System.Data.OracleClient y System.Data.SqlClient. Cada tipo de datos tiene
sus propias clases Connection, Command, DataReader y DataAdapter para
cada sistema de gestión de datos SGBD; por ejemplo si se necesita crear una
conexión SQL se utilizara SqlConnection.
- El Servidor.
- Base de Datos.
- La Autenticación (Usuario y Contraseña).
Para las conexiones Microsoft SQL Server se tendrá que utilizar el espacio
System.Data.SqlClient
Imports System.Data.SqlClient
'SQL Server
Dim ordenSQL As SqlCommand = New SqlCommand( _
"Select cli_nombre, cli_apellido from Clientes", _
Conexion)
'SQL Server
Dim lector As SqlDataReader = ordenSQL.ExecuteReader()
Aplicación
DataReader Command
Connection
Origen de Datos
'SQL Server
Conexion.Open()
Dim lector As SqlDataReader = ordenSQL.ExecuteReader()
While (lector.Read())
Console.WriteLine(lector.GetString(0) + ", " + _
lector.GetString(1))
End While
lector.Close()
conexion.Close()
Para poder recuperar las columnas de la fila actual del conjunto de datos
proporcionado por el DataReader, se puede utilizar la funcionalidad
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 18
LENGUAJE DE PROGRAMACIÓN III
Para base de datos OLE DB, se utilizara OleDataAdapter junto con sus objetos
OleDbCommand y OleDbConnection de manera conjunta. Para bases de datos
ODBC se utilizara OdbcDataAdapter junto con los objetos OdbcCommand y
OdbcConnection.
Cada adaptador de datos intercambia datos entre una sola tabla de un origen
de datos y un solo objeto DataTable (tabla de datos) del conjunto de datos. Lo
que se entiende es que se deberá de utilizar el objeto DataTable tantas veces
como tablas se tengan en el conjunto de datos. De esta manera cada tabla del
conjunto de datos tendrá su correspondiente tabla en el origen de datos.
Llenado de un DataSet:
Conjunto de DataAdapter
Dato SelectCommand
InsertComman Connection
Dato
DeleteComman
UpdateComman
SelectCommand; hace referencia a una orden que recuperara filas del origen
de datos, se entiende por objeto Command al que almacena una instrucción
SQL o un procedimiento almacenado.
MODOS DE CONEXIÓN.
Esta acción es la que más recursos consume del sistema, es por ello que se
debe de tener en cuenta las siguientes consideraciones:
Aplicación
DataSet
DataReader
Command DataAdapte
Connection
Base de Datos
Imports System.Data.SqlClient
'Crear la Conexión
Aplicación CTelefono
txtNombre.Text = objTfno.Nombre
txtTelefono.Text = objTfno.Telefono
' Agregue cualquier inicialización después de la llamada a
InitializeComponent().
End Sub
End Class
Imports System.ComponentModel
puede observar que el método que responderá a este evento tiene dos
parámetros, el primero es una referencia al objeto CTelefono que genera el
evento, y el segundo los datos de tipo PropertyChangedEventArgs
relacionados con el evento, que en este caso se corresponden con el nombre
de la propiedad que ha cambiado.
Se puede utilizar este evento para mantener la interfaz del usuario sincronizada
con el objeto CTelefono, operación que antes se podía realizar manualmente
en el método btModificarObj_Click y que ahora, al no realizarla, quedaría de la
siguiente manera:
Imports System.ComponentModel
End Class
Una colección que implementa IList como, por ejemplo, ArrayList. Es necesario
crear y llenar la colección antes de crear el enlace. Todos los objetos de la lista
deben ser del mismo tipo, de lo contrario, se produce una Excepción.
Clase Binding:
Se puede observar que los controles que pueden tener un enlace tienen una
propiedad DataBindings que hace referencia a una colección
ControlBindingsCollection de objetos Binding. Para poder agregar un Binding a
la colección, se debe de llamar al método Add de la colección, lo que permitirá
enlazar una propiedad del control a una propiedad de un objeto.
Tipos de Enlace:
Un enlace a datos puede ser de características sencillas o complejas
dependiendo de su estructura. Se le dice un enlace sencillo cuando un control
se enlaza a un único elemento de datos, con una propiedad de un control a la
cual se le enlazara a un campo de una base de datos. Este viene a ser el tipo
de enlace típico para controles que suelen mostrar un único valor, como podría
ser el control TextBox. Se dice que un enlace es complejo cuando un control
puede enlazarse a varios elementos de datos, es decir a más de un registro de
una base de datos; este tipo de controles podrían ser los DataGridView,
ListBox y ComboBox.
Componentes BindingSource:
Los Windows Form permiten enlazar un origen de datos al componente
BindingSource, para luego hacer de intermediario entre el origen de datos y los
controles enlazados.
Crear un Enlace:
Para probar el enlace desde Visual.Net se desarrollara la siguiente aplicación
como ejemplo práctico:
End Sub
End Sub
End Class
txtTelefono.DataBindings.Add(
New Binding("ForeColor", txtNombre, "ForeColor"))
Aplicación de Conversiones:
Se pueden convertir los datos antes de mostrarlos en el destino o inclusive
antes de almacenarlos en el origen, esto se realiza con los eventos Format y
Parse. Format se utiliza cuando los datos van de origen a destino, porque se
tendrían que cambiar el destino debido a que el origen cambio. Parse se utiliza
cuando los datos van de destino a origen, porque se debe de cambiar el origen
ya que el destino ha cambiado.
objTfno.Telefono = 123456789
End Sub
Catch ex As Exception
MessageBox.Show("Introducir el Teléfono sin Espacios")
End Try
End If
End Sub
Otra verificación que se puede hacer es que el nombre sea una cadena vacía,
que solo contendrá letras y espacios en blanco y que siempre empiece por una
letra. Esto se realiza con el evento Parse del enlace correspondiente al cuadro
de texto txtNombre, para ello se añade el controlador de este evento al objeto
Binding vinculado al control txtNombre:
El origen de un enlace puede ser un objeto único, para realizar una consulta a
una base de datos se puede utilizar controles como ListBox, ComboBox y
DataGridView. Para poder enlazar estos controles se debe de utilizar la
propiedad DataSource.
• List:
Viene a ser un equivalente a la Clase ArrayList, esta es más práctica y
manejable ya que trabaja una interfaz gráfica.
Ejemplo:
- Generar un Nuevo Proyecto Windows Forms “Binding_Source”.
- Insertar los siguientes objetos:
‘Nuevo CTelefono
Public Shared Function CrearCTelefono(nom As String, tfn As Decimal) As
CTelefono
Dim tfno As New CTelefono()
tfno.Nombre = nom
tfno.Telefono = tfn
Return tfno
End Function
End Class
OPERACIONES:
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
- Clase Alumno.vb
Imports System.ComponentModel
Imports System.Collections.ObjectModel
OnPropertyChanged(New PropertyChangedEventArgs("NomAlumno"))
End Set
End Property
End Property
End Function
Public Sub New(id As Integer, nom As String, dir As String, est As String,
beca As Boolean, lista As BindingList(Of Asignaturas))
IdAlumno = id
NomAlumno = nom
DirAlumno = dir
EstAlumno = est
BecaAlumno = beca
ListaCoAsignaturas = lista
End Sub
End Class
- Clase Asignatura.vb
Imports System.ComponentModel
End Property
- Clase Asignaturas.vb
Imports System.Collections.ObjectModel
Imports System.ComponentModel
_listaAsignaturas = value
End Set
End Property
- Clase bbdd.vb
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Imports System.Windows.Forms
Next
coAsignaturas.Add(New Asignaturas("Obligatorias", asignaturas))
‘Optativas
asignaturas = New BindingList(Of Asignatura)()
For a As Integer = 0 To rnd.[Next](2, 4) - 1
Dim idAsOp As Integer = (i - 1 + a) Mod 9
System.Diagnostics.Debug.WriteLine(idAsOp)
Dim asig As String = ObtenerAsigsOP(idAsOp).Text
'Asignatura op?,...
Dim nota As Single = CSng(CInt(rnd.NextDouble() * 100) / 10.0F)
asignaturas.Add(New Asignatura(CInt(ObtenerAsigsOP(idAsOp).Tag),
asig, nota))
Next
coAsignaturas.Add(New Asignaturas("Optativas", asignaturas))
_alumnos.Add(New Alumno(idAl, nomAl, dirAl, estAl, becaAl,
coAsignaturas))
Next
Return _alumnos
End Function
End Property
- Clase ListAlumnos.vb
Imports System.ComponentModel
Vinculación Maestro Detalle: Esto incluye dos partes, una vista que muestra
una lista de elementos, normalmente una colección de datos, y una vista de
detalles del elemento que se selecciona en la lista anterior.
End Class
Ejecutar la aplicación:
- Crear una Base de Datos en SQL con el nombre “Instituto” y añadir una tabla
“Alumnos” con la siguiente estructura:
Imports System.Data.SqlClient
Imports System.Data
'Eliminar Registros
Public Function eliminar(tabla As String, condicion As String) As Boolean
cn.Open()
Dim sql As String = "Delete From " & tabla & " Where " & condicion
comando = New SqlCommand(sql, cn)
Dim i As Integer = comando.ExecuteNonQuery()
cn.Close()
If i > 0 Then
Return True
Else
Return False
End If
End Function
'Actualizar Registros
Public Function Actualizar(tabla As String, campos As String, condicion
As String) As Boolean
cn.Open()
Dim sql As String = "Update " & tabla & " Set " & campos & " Where "
& condicion
comando = New SqlCommand(sql, cn)
Dim i As Integer = comando.ExecuteNonQuery()
If i > 0 Then
Return True
Else
Return False
End If
End Function
'Consultar Registros
Public ds As New DataSet()
Public da As SqlDataAdapter
txtApePat.Enabled = False
txtApeMat.Enabled = False
txtSexo.Enabled = False
txtTelefono.Enabled = False
txtEdad.Enabled = False
txtDireccion.Enabled = False
End Sub
txtSexo.Text =
dgvAlumnos.Rows(dgvAlumnos.CurrentRow.Index).Cells(4).Value
txtTelefono.Text =
dgvAlumnos.Rows(dgvAlumnos.CurrentRow.Index).Cells(5).Value
txtEdad.Text =
dgvAlumnos.Rows(dgvAlumnos.CurrentRow.Index).Cells(6).Value
txtDireccion.Text =
dgvAlumnos.Rows(dgvAlumnos.CurrentRow.Index).Cells(7).Value
btActualizar.Enabled = True
btEliminar.Enabled = True
btNuevo.Enabled = False
Activar()
End Sub
Para el fin de poder trabajar con este conector a origen e datos, se debe de
tener una base de datos con todos los privilegios para su manipulación.
Option Explicit On
Option Strict On
Imports System.Data
Imports System.Data.SqlClient
'Declarar un BindingSource
Try
'Declarar la conexión y abrir
Using cn As SqlConnection = New SqlConnection(cs)
cn.Open()
'llenar el DataTable
da.Fill(dt)
End Using
'errores
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub
Try
'si está vacío salir y no retornar nada
If BindingSource1.DataSource Is Nothing Then
Return -1
End If
'retornar el valor
Return fila
'errores
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
End Try
'no retornar nada
Return -1
End Function
'si no se encontró
If ret = -1 Then
'mostrar un mensaje
MsgBox("No se encontró la fila", MsgBoxStyle.Critical)
Else
With DataGridView1
'volver a enlazar
.DataSource = BindingSource1
'Pasarle el índice para Visualizar la fila al comienzo de la grilla
.FirstDisplayedScrollingRowIndex = ret
End With
End If
End Sub
End Sub
End Class
Imports System.Data.SqlClient
End Using
End Sub
'Datos a Mostrar
Dim p1 As Integer = CInt(row(0).Item("pro_precio"))
Dim p2 As Integer = CInt(row(0).Item("pro_stock"))
End Sub
Formulario 1 – frmBuscarProducto
Formulario 2 - frmListar
Ejemplo:
Create DataBase DBSenati
Ejemplo:
Drop DataBase DBSenati
Ejemplo:
Use DBSenati
Ejemplo:
Create Table Alumnos (
alu_codigo Integer Identity Primary Key,
alu_nombres Varchar(50) Not Null,
alu_apellidos Varchar(50) Not Null,
alu_dni Varchar(8) Unique,
alu_edad char(2),
alu_direccion Varchar(50)
)
Ejemplo:
Insert Into Alumnos Values ('Manuel','Huaman','40219856','20','Av.
Arequipa 2010')
Ejemplo:
Update Alumnos
Set alu_direccion = 'Av. Areuipa 2510'
Where alu_codigo = 1
WHERE <condición>
Ejemplo:
Ejemplo:
/* Seleccionar Todos los Registros */
Select * From Alumnos
/* Seleccionar Todos los Registros con el Nombre Raúl */
Select * From Alumnos Where alu_nombres='Raúl'
/* Seleccionar Todos los Registros que empiecen con las letras Ra */
Select * From Alumnos Where alu_nombres Like 'Ra%'
/* Seleccionar Todos los Registros Ordenados por el campo Apellido de
manera Ascendente*/
Select * From Alumnos Order By alu_apellidos Asc
/* Seleccionar Todos los Registros Ordenados por el campo Apellido de
manera Descendente*/
Select * From Alumnos Order By alu_apellidos Desc
/* Seleccionar Todos los Registros que tengan edad de 18 a 20 años*/
Select * From Alumnos Where alu_edad between 18 And 20
- Procedimientos Almacenados:
Conjunto de instrucciones SQL que se almacenan en la misma Base de Datos.
Pueden aceptar funciones, datos y devolver otros datos, así mismo pueden
llamar a otros procedimientos.
Sintaxis:
CREATE PROCEDURE <Nombre Procedimiento> (
<Variable>
<Variable> )
AS
<Instrucción SQL>
Ejemplo:
/* Procedimiento para Listar Datos */
Create Procedure PA_ListarDatos (
@alu_codigo integer
)
As
Select * From Alumnos
Where alu_codigo = @alu_codigo
ForeColor Blue
TextBox2 Name txtPass
PasswordChar *
Button1 Name btIngresar
Text Ingresar
Button2 Name btRegistrar
Text Registrar
End Class
End Sub
End Sub
End Class
Imports System.Data
Imports System.Data.Common
Imports System.Data.Odbc
Imports System.Data.OleDb
Imports System.Data.SqlClient
Try
Dim sql As String = "SELECT * FROM [" & tableName & "]"
Dim da As DbDataAdapter = Nothing
Else
da = New SqlDataAdapter(sql, DirectCast(connection, SqlConnection))
End If
Catch ex As Exception
'Los proveedores Odbc y SqlClient provocan una excepción
'si la tabla especificada no existe.
Return False
Finally
connection = Nothing
End Try
End Function
End Class
Imports System.Data.SqlClient
Public Class Class1
'<summary>
'Crea una nueva base de datos SQL Server, eliminándola del servidor si ya
existe.
'</summary>
'<author>Enrique Martínez Montejo - 2006</author>
'<param name="databaseName">Nombre de la base de datos.</param>
'<param name="fileName">Ruta completa del archivo físico.</param>
'<param name="instanceName">Nombre de la instancia de SQL Server
'donde se creará la base de datos.</param>
'<param name="userInstance">Especifica si se va a utilizar instancias de
usuario.</param>
'<param name="userId">Cuenta de usuario.</param>
'<param name="userPassword">Contraseña del usuario</param>
'<param name="overWrite"> Indica si se confirma la eliminación de la base,
'en el supuesto de que ya exista la misma.</param>
'<returns></returns>
'<remarks></remarks>
Public Function CreateDatabaseSQLServer(ByVal databaseName As String, _
ByVal fileName As String, _
ByVal instanceName As String, _
ByVal userInstance As Boolean, _
ByVal userId As String, _
ByVal userPassword As String, _
ByVal overWrite As Boolean) As
Boolean
csb.DataSource = instanceName
csb.Add("Initial Catalog", "master")
csb.UserInstance = userInstance
Else
'Utilizo la autenticación de SQL Server.
Try
Using cnn As New SqlConnection(csb.ConnectionString)
Dim cmd As SqlCommand = cnn.CreateCommand()
cnn.Open()
dr.Close()
dr = Nothing
If (existsDatabase) Then
'Primero hay que eliminar la base de datos de la instancia de SQL Server.
cmd.CommandText = _
"CREATE DATABASE " & databaseName & _
" ON (Name = " & databaseName & "_dat," & _
"FILENAME =N'" & fileName & "', SIZE=5)"
cmd.ExecuteNonQuery()
Return True
End Using
Catch ex As Exception
'Devolvemos la excepción al procedimiento llamador
Throw
End Try
End Function
End Class
OPERACIONES:
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
- PRINTFORM:
Este componente permite imprimir en tiempo de ejecución un formulario como
si fuera una imagen, puede ser útil cuando se necesita capturar la pantalla de
un sistema para enviarla a impresión de manera directa. Según la necesidad se
utiliza parámetros o una sentencia simple.
Sintaxis:
Los Eventos a utilizar más comunes, BeginPrint que se utiliza antes de imprimir
la primera página del documento, EndPrint que se produce cuando se imprime
la última página y QueryPageSettings que se produce antes que se imprima
cada página.
Ejemplo:
'Visual Basic.
Dim pf As New PrintForm
pf.Form = Me
pf.PrintAction = PrintToPrinter
pf.Print()
Ejercicio:
Generar una Aplicación llamada “FormularioImpresión”, en la cual permitirá
imprimir los controles visibles del formulario.
End Sub
- ReportViewer:
Una solución sencilla para poder imprimir reportes y/o informes es utilizar el
control ReportViewer. La ventaja de este control es que proporciona un
diseñador de informes utilizando como referencia cualquier objeto de datos
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 93
LENGUAJE DE PROGRAMACIÓN III
- Dentro de los controles en “Datos del Informe” dar clic a Nuevo – Conjunto
de Datos.
Form2.Show()
Me.Hide()
End Sub
Select
Alumnos.alu_codigo,Alumnos.alu_nombre,Alumnos.alu_apellidopat,Alumnos.
alu_apeliidomat,Alumnos.alu_docident,Alumnos.alu_edad,Alumnos.alu_fech
anac,Alumnos.alu_direccion,Distritos.dis_descripcion,Alumnos.alu_email
From Alumnos Inner Join Distritos on
Alumnos.dis_codigo=Distritos.dis_codigo
- Se podrá apreciar en el informe que ya está listo para insertar los objetos,
variables y campos de datos necesarios.
- Arrastrar los campos del origen de datos al Detalle del Reporte y reducir el
tamaño del detalle para que los registros se muestren en un sólo reporte.
- Agrandar el Pie del Grupo e insertar las Variables Numero de Página y una
línea.
Procedimientos Almacenados:
/* Distritos */
Create Procedure alta_Distritos (
@descripcion Varchar(50)
)
As
Insert Into Distritos
Values (@descripcion)
Go
/* Profesor */
Create Procedure alta_Profesor (
@pronombre Varchar(50),
@proapellidos Varchar(50),
@prodni Varchar(8),
@profechanac Date,
@prodireccion Varchar(50),
@prodiscodigo Integer,
@proemail Varchar(50)
)
As
Insert Into Profesor
Values
(@pronombre,@proapellidos,@prodni,@profechanac,@prodireccion,@prodisco
digo,@proemail)
Go
/* Cursos */
Create Procedure alta_Cursos (
@curdescripcion Varchar(50),
@cursemestrecodigo Integer
)
As
Insert Into Cursos
Values (@curdescripcion,@cursemestrecodigo)
Go
/* Matriculas */
/* Distritos */
Create Procedure ver_Distritos (
@discodigo Integer
)
As
Select * From Distritos
Where dis_codigo=@discodigo
Go
/* Profesor */
Create Procedure ver_Profesor (
@procodigo Integer
)
As
Select * From Profesor
Where pro_codigo=@procodigo
Go
/* Semestre */
Create Procedure ver_Semestre (
@semcodigo Integer
)
As
Select * From Semestre
Where sem_codigo=@semcodigo
Go
/* Cursos */
Create Procedure ver_Cursos (
@curcodigo Integer
)
As
Select * From Cursos
Where cur_codigo=@curcodigo
Go
/* Costos */
/* Matriculas */
Create Procedure ver_Matriculas (
@matcodigo Integer
)
As
Select * From Matriculas
Where mat_codigo=@matcodigo
Go
/* Notas */
Create Procedure ver_Notas (
@notacodigo Integer
)
As
Select * From Notas
Where nota_codigo=@notacodigo
Go
Imports System.Data.SqlClient
'función conectar
Public Function Conectar() As SqlConnection
Dim Cadena As String
Cadena = "Server=DESKTOP-
FRUVH1J\SQLEXPRESS;DataBase=Senati6;Uid=sa;Password=root"
Dim cn As New SqlConnection(Cadena)
Try
cn.Open()
Return cn
Catch ex As Exception
MsgBox(ex.Message)
Return cn
End Try
End Function
'Función Consultar
Public Function Consultar(Campos As String, tabla As String) As DataTable
'Consultar la Tabla que se encuentra en la base de datos
Dim sql As String = "Select " & Campos & " From " & tabla
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Dim da As New SqlDataAdapter
Dim dt As New DataTable
con = Conectar()
cmd = New SqlCommand(sql, con)
da = New SqlDataAdapter(cmd)
Try
da.Fill(dt)
Return dt
Catch ex As Exception
Return dt
con.Close()
End Try
End Function
End Class
dgvAlumnos.Columns(1).HeaderText = "Nombre"
dgvAlumnos.Columns(2).HeaderText = "Apellido Paterno"
dgvAlumnos.Columns(3).HeaderText = "Apellido Materno"
dgvAlumnos.Columns(4).HeaderText = "DNI"
dgvAlumnos.Columns(5).HeaderText = "Edad"
dgvAlumnos.Columns(6).HeaderText = "Fecha Nac."
dgvAlumnos.Columns(7).HeaderText = "Dirección"
dgvAlumnos.Columns(8).HeaderText = "Distrito"
dgvAlumnos.Columns(9).HeaderText = "E-mail"
End Class
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Data
con.Conectar()
com = New SqlCommand(sql, con.Conectar)
dr = com.ExecuteReader
If dr.Read Then
txtNumMat.Text = dr(0)
matcodigo = Val(txtNumMat.Text) + 1
txtNumMat.Text = matcodigo
txtCodAlumno.Enabled = True
txtCodAlumno.Focus()
btNuevo.Enabled = False
End If
End Sub
End Sub
Private Sub btGuardar_Click(sender As Object, e As EventArgs) Handles
btGuardar.Click
Call Me.Registrar()
MsgBox("Matricula Registrada")
btImprimir.Enabled = True
btImprimir.Focus()
btGuardar.Enabled = False
End Sub
End If
End Sub
OPERACIONES:
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
Unidades de Disco:
Se puede determinar qué letras de unidad están en uso en un equipo local
mediante las aplicaciones API de Win32 GetLogicalDriveStrings. Esta lista de
letras de unidad será las letras de unidad de todas las unidades activas en el
equipo local, incluidas las unidades de disquete, discos duros, unidades
asignadas y otras unidades que se asignan a una letra de unidad.
A:\<null>C:\<null><null>
• IsReady: valor booleano que indica si la unidad está lista. Ten en cuenta
que no podrá acceder a la mayoría de los datos, como el sistema de
archivos o el espacio libre si la unidad no está montada.
End If
End Sub
Carpetas:
Ejercicio 2; para mostrar Carpetas y sub carpetas, de una unidad o ruta
indicada. Así mismo no carga todas las carpetas y subcarpetas al principio,
sino que usa el evento "AfterExpand" del TreeView para cargar las subcarpetas
del nodo desplegado. De esta forma la carga es muy rápida y eficiente:
If nodoTree.Nodes.Count = 0 Then
For Each carpetaActual In
My.Computer.FileSystem.GetDirectories(rutaRaiz)
indice =
carpetaActual.LastIndexOf(System.IO.Path.PathSeparator)
nodoTree.Nodes.Add(carpetaActual.Substring(indice + 1,
carpetaActual.Length - indice - 1))
nodoTree.LastNode.Tag = carpetaActual
nodoTree.LastNode.ImageIndex = 0
Next
End If
End Sub
If IO.Directory.Exists(rutaRaiz) Then
End Class
Archivos:
End Class
- Ejecutar la Aplicación.
Listado de Programas
Office
Ms-Word
Ms-Excel
Ms-PowerPoint
Aplicaciones
Block de Notas
Calculadora
Paint
Reportes
Rpt-Factura
Rpt-Alumnos
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Class
- Ejecutar la aplicación y dar clic a los menús para mostrar y activar las
aplicaciones. Por ejemplo M-Word.
My.Computer.FileSystem.MoveFile(foundFile, "C:\StorageDir")
Next
End Sub
End Class
Ejercicio 6; Crear una aplicación que nos mostrara las características de los
ficheros y directorios determinados o del sistema.
End Sub
End Sub
End Class
Para este fin existe la clase de dominio público, con lo que solo se tiene que
descargar y referenciar la clase en el proyecto. La solución a esto se encuentra
en la clase que ofrece la librería Dotnetzip. Gracias a esta librería, se puede
comprimir y descomprimir archivos con una sintaxis muy fácil de entender.
Variables a Utilizar:
• ZipAExtraer: Variable de tipo “String” y que servirá para poner la ruta para
el archivo a extraer.
• DirectorioExtraccion: Variable de tipo “String” y que servirá para poner la
ruta donde irá el archivo extraído.
• zip1: Variable de tipo “ZipFile” (está incluido en la librería ionic.zip.dll que
hemos referenciado) que le dirá al procedimiento que archivo tiene que leer
y cuál es el contenido a extraer.
StartPosition CenterScreen
Label1 Text Nombre de Archivo
Label2 Text Ruta del Archivo
TextBox1 Name txtNombreArchivo
TextBox2 Name txtRuta
Button1 Name btDescomprimir
Text Descomprimir
BackColor Silver
ForeColor Maroon
Button2 Name btComprimir
Text Comprimir
BackColor Silver
ForeColor Maroon
Imports Ionic.Zip
Public Class frmComprimirDescomprimir
'Función para Extraer Archivos
Private Sub Extraer()
Dim ZipExtraer As String = txtNombreArchivo.Text
Dim DirectorioExtracción As String = txtRuta.Text
Using Zip1 As ZipFile = ZipFile.Read(ZipExtraer)
Dim e As ZipEntry
For Each e In Zip1
e.Extract(DirectorioExtracción,
ExtractExistingFileAction.OverwriteSilently)
Next
End Using
End Sub
'Función para Comprimir Archivos
Private Sub Comprimir()
Using zip As ZipFile = New ZipFile()
zip.AddFile(txtNombreArchivo.Text)
zip.AddFile("Archivo2")
zip.AddFile("Archivo3")
zip.Save("NombreArchivo.Zip")
End Using
End Sub
Extraer()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles
btComprimir.Click
'Llamada a la Función Comprimir
Comprimir()
End Sub
End Class
OPERACIONES:
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
Utilizar Paso a paso es básicamente para salir cuando se esté dentro de una
llamada a una función y se desee volver a la función de llamada. Paso a paso
para salir permite reanudar la ejecución del código hasta poder regresar a la
función, a continuación, se interrumpe en el punto devuelto de la función de
llamada.
Siempre que se añada código fuente que pueda iniciar una excepción será
conveniente introducirlo en un bloque Try...Catch...End. El código que quede
entre Try y Catch estará protegido contra excepciones y si se iniciara una
Try
y = CInt(InputBox("Introduzca Y", "Control de excepciones", 0))
x = x 'y
- Ejecutar la Aplicación e ingresar los valores que van pidiendo los cuadros de
diálogo.
Try
y = CInt(InputBox("Introduzca Y", "Control de excepciones", 0))
x = x 'y
'Si "y" = 0, la siguiente instrucción no se ejecutará
y = CInt(10 ^ x)
MsgBox("El valor de Y es: " + CStr(y))
Catch ex As DivideByZeroException
MsgBox("Error al intentar dividir por cero.", _
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
Catch ex As OverflowException
MsgBox("Error de desbordamiento, número muy grande.", _
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
Catch ex As Exception
MsgBox("Se ha producido el siguiente error: " + ex.Message, _
MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
End Try
End Sub
End Class
- Ejecutar la Aplicación e ingresar los valores que van pidiendo los cuadros de
diálogo.
Dentro de la cláusula Catch se podrá utilizar una expresión When opcional que
le permitirá especificar una condición adicional que el bloque Catch deberá
evaluar como True para que sea seleccionada. Esta característica permitirá
definir filtros de excepciones más específicos.
Finally
Código de ejecución:
Try
' el programa
A=b/c
Catch Ex As OverflowException ' tratamiento de error
End Class
Capa Datos:
En esta capa se determinará la conexión a una Base de Datos, creando las
interfaces y clases para dicha conexión. La base de datos estará estructurada
en un Motor de Base de Datos como por ejemplo SQL Server.
SELECT Articulos.*
FROM Articulos
ORDER BY Producto
- En la ventana que se muestra, desactivar “Devolver un DataTable” y en la
opción “Rellenar un DataTable”. Nombre del Método “ObtenerArticulos”.
Finalizar.
Capa Negocios.
Esta Capa Negocios contiene los procesos a realizar con la información
recibida desde la Capa Presentación, las peticiones que el usuario ha
realizado, y responsabilizándose de que se le envíen las respuestas adecuadas
a la capa de presentación. Se puede ver como una capa intermedia, a medio
camino entre la Capa Presentación y la Capa de Datos, puesto que se
relaciona con ambas y por supuesto, procesa también la información devuelta
por la Capa de Datos
Throw
End Try
End Sub
End Class
Capa Presentación.
Esta capa se encarga de proveer una interfaz entre el sistema y el usuario.
Básicamente, se responsabiliza de que se le comunique información al usuario
por parte del sistema y viceversa, manteniendo una comunicación exclusiva
con la Capa de Negocios.
- Agregar las Referencias para las Capas Datos y Negocios. Clic derecho a
PresentacionTIC – Agregar Referencia – Seleccionar Datos y Negocios –
Aceptar
'Referencia Negocios
Imports Negocios
Public Class Demo
End Try
End Sub
OPERACIONES:
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
Where id=@id
Go
Se pueden desarrollar varios tipos de proyecto en Visual Basic .Net, como por
ejemplo aplicaciones que llaman a otras dentro de una estructura, creando
accesos directos y ubicación en el Menú Inicio
- Crear un nuevo proyecto – Plantillas – Windows – Aplicación de Windows
Forms. Ingresar el Nombre “MyNotePad”.
En este post voy a explicar cómo realizar una conexión entre cliente y servidor
con vb.net con el sistema de comunicación del espacio de nombres
System.Runtime.Remoting.Channels, este contiene clases que admiten y
controlan los canales y los receptores de canales, que se utilizan como el
medio de transporte cuando un cliente llama a un método en un objeto remoto.
Para realizar una conexión entre cliente y servidor con vb.net, debemos de
crear 3 proyectos con vb.net, El cliente, el servidor y la dll que contiene todos
los objetos y las llamadas del programa.
Primer programa, generación de la dll:
End Try
End Function
End Class
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Aquí también debemos de crear un xml con los servicios o clases que hemos
creado en el primer programa o dll, este archivo lo llamaremos
“Client.exe.config”, destacar aquí que debemos de especificar la dirección IP
del servidor, en este ejemplo es la de localhost porque cliente y servidor están
en el mismo ordenador.
<Configuration>
<System.Runtime.Remoting>
<application>
<Client>
<wellknown Type = "servidorJNSport.loginAction, ServidorJNSport"
url="http://localhost:8085/RemoteLogin.rem"/>
</Client>
</application>
</system.runtime.remoting>
</configuration>
A partir de este ejemplo se pueden crear todos los métodos remotos que
queramos, siempre respetando el orden, primero en el programa dll, y luego en
el servidor.
Es una manera sencilla de separar el cliente del servidor y que los programas
cliente no tengan que realizar tareas directamente con la base de datos, de
esta manera el tráfico de datos también es menor ya que muchas operaciones
se pueden realizar en el programa servidor.
OPERACIONES:
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIÓN:
Se debe distinguir dos tipos de Apache, que corresponden con las versiones
1.3.X y 2.0.X de este programa. El motivo de la distinción es que se usan
bastante ambas versiones dependiendo del sistema operativo y la
configuración es ligeramente distinta en ambos. En ambas versiones son
estables en sistemas Windows XP, pero la 2.0.X puede volverse inestable bajo
Windows 98.
Se Deberá descargar el Apache en su versión para Windows. Acceder al URL:
http://httpd.apache.org/download.cgi En cualquier caso, se puede encontrar
cualquier archivo necesario en la carpeta httpd/binaries/win32 del servidor que
se utilizará para la descarga.
Run when started manually, only for me. Seleccionamos esta opción.
Instalación de PHP:
Descargar el PHP para Windows. El archivo está localizado en la sección
Downloads, apartado Windows Binaries, y es el Zip Package. Para la versión
4.3.10, es: PHP 4.3.10 zip package [7,405Kb].
Una vez descargado todo el ZIP, crear una carpeta en el sitio donde se quiera
instalar los archivos del servidor (PHP, MySQL…), por ejemplo crear una
carpeta en la raíz del disco duro C:\Servidor\, extraer los archivos del ZIP de
PHP dentro de esa carpeta. En este caso se crea la carpeta C:\Servidor\php-
4.3.10-Win32\, se podría renombrarla a C:\Servidor\PHP\
Realizar las pruebas con upload de archivos vía HTTP, se debe de indicar el
directorio donde los archivos se almacenarán temporalmente. Para ello buscar
upload_tmp_dir y dar el valor de una carpeta que exista. Por ejemplo, el
directorio C:\Servidor\PHP\ crear una carpeta uploads, por lo que quedará algo
así:
; Temporary directory for HTTP uploaded files (will use system default if not;
specified).
upload_tmp_dir = "C:/Servidor/PHP/uploads/"
Instalación de MySQL:
Existen dos tipos de archivo descargable, en ZIP y en EXE. El instalador EXE
lleva un setup, que por defecto se instala en C:\MySQL\, se puede elegir otra
ruta de instalación, por ejemplo: C:\Servidor\MySQL\, para tener el PHP y
MySQL en la misma carpeta. Una vez finalizada la instalación, solo hay que
llamar al winmysqladmin.exe que estaría en C:\Servidor\MySQL\bin\ y la
primera vez que se ejecute, pedirá un nombre de usuario y contraseña, que se
deberá de introducir. Por ejemplo se puede ingresar el usuario "Admin" y la
contraseña "1234". Ahora al lado del reloj saldrá un semáforo. Si el semáforo
se pone en verde, quiere decir que el programa ya está activo.
Por defecto, MySQL crea un usuario de nombre root y sin contraseña, y éste es
el usuario que se usara en los script o en las aplicaciones que lo requieran
(foros, PHP Nuke, etc.).
Instalación de phpMyAdmin:
PhpMyAdmin es una utilidad que sirve para interactuar con una base de datos
de forma muy sencilla y desde una interfaz web. Sirve para crear bases de
datos, tablas, borrar o modificar dados, añadir registros, hacer copias de
seguridad, etc. Es una aplicación tan útil que casi todos los hosting con MySQL
disponen de ella. La instalación es relativamente sencilla: extraer todo el ZIP en
la carpeta raíz de la web a utilizar, por ejemplo: C:\Servidor\WEB\ y no dentro
de la carpeta del PHP o similares. Se puede renombrar a phpmyadmin, de
forma que quedaría algo así: C:\Servidor\WEB\phpmyadmin\
Hacer una pequeña configuración del phpMyAdmin. Para ello se debe editar el
archivo config.inc.php:
$cfg[‘PmaAbsoluteUri’] = ”;
$cfg[‘PmaAbsoluteUri’] = ‘http://localhost/phpmyadmin/’;
$cfg[‘blowfish_secret’] = ”;
Crear un usuario.
$cfg['Servers'][$i]['auth_type']
$cfg['Servers'][$i]['user']
$cfg['Servers'][$i]['password']
Cambiar su valor. En la primera poner config para que no pida contraseña al
entrar (útil si se es el único usuario que va a disponer de este phpMyAdmin).
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'Pepe';
$cfg['Servers'][$i]['password'] = 'hola';
<?php
echo "¡Hola, soy un script de PHP!";
?>
</body>
</html>
Lo que distingue a PHP de algo del lado del cliente como Javascript es que el
código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El
cliente recibirá el resultado de ejecutar el script, aunque no se sabrá el código
subyacente que era. El servidor web puede ser configurado incluso para que
procese todos los ficheros HTML con PHP.
La cláusula else (la parte del if-else que indica lo que hay que hacer si la
condición es falsa) es opcional. No es necesario ponerla. Por ejemplo se puede
querer un script que sólo salude a un usuario especial. En este caso, se
cambiaría saludar.php de la siguiente manera:
<html>
<head>
<title> Ejemplo básico de If </title>
</head>
<body>
<h1> Página de bienvenida</h1>
<?php // empieza el código php
if ($nombre=="Luis") { // Si el nombre es Luis
echo(" Hombre $nombre! De paso por aquí otra vez!"); // Saludo para
Luis
}
?>
</body>
</html>
El operador ==; Se debe de utilizar el doble signo “=”. Si se utiliza sólo “=”, se
estaría indicando el operador de asignación, es decir estableciendo que
$nombre es igual a Luis con lo que la condición siempre sería cierta. Las
condiciones pueden complicarse mucho más, Podría suponerse que se dejara
ingresar sólo sí además de llamarse Luis, sabe la contraseña, que en este caso
es “1234”:
Código en el Formulario:
<html>
<head>
BUCLES: WHILE
If else permitía decidir si se quería ejecutar o no una instrucción en función de
una condición, los bucles permiten utilizar una condición para determinar
cuántas veces se quiere ejecutar una instrucción:
While (condicion) {
// Instrucciones a ejecutar una y otra
//vez mientras la condición sea cierta
}
BUCLES: DO WHILE
Los bucles do while, son muy parecidos a los bucles while, sólo que se
comprueba si la condición es cierta al final del bucle en lugar de al principio. Así
las instrucciones se ejecutan siempre al menos una vez, lo que no ocurre en
las condiciones while si la condición es falsa.
$cantidad = 1;
do {
echo ($cantidad);
} while ($cantidad<1);
BUCLES: FOR
Los bucles for funcionan exactamente igual que en C. Con una sola instrucción
se controla todo el bucle.
Ejemplo:
For ($cantidad = 1; $cantidad <10; $i++) {
echo("$cantidad");
}
SWICH/CASE:
SINTAXIS ALTERNATIVA.
PHP ofrece una sintaxis alternativa para alguna de sus estructuras de control:
if, while, for, y switch. Puede hace el código más legible en algunos casos,
especialmente en las páginas multiuso.
If con construcción alternativa.
<?php if ($a==5): ?>
A es igual a 5
<?php endif; ?>
Páginas Multiuso.
Las Páginas multiuso son aquellas que pueden mostrar un contenido
completamente diferente dependiendo de alguna condición. De esta forma, se
puede hacer varias cosas en un solo documento.
La estructura habitual de una página multiuso es:
<html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<php?
If (condición) { ?>
<!-- HTML que se mostará si la condición es cierta -->
<?php }else{ ?>
<!-- html que se mostratará si la condición es falsa -->
<?php } ?>
</body>
</html>
O utilizando la sintaxis alternativa que acabamos de ver:
<html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<php?
if (condición): ?>
<!-- HTML que se mostará si la condición es cierta -->
<?php else: ?>
<!-- html que se mostratará si la condición es falsa -->
<?php endif; ?>
</body>
</html>
Ejemplo:
Utilizar el ejemplo de switch y utilizar una sola página (multiuso.php) para el
formulario y las respuestas.
<html>
<head>
<title> Página Multiusos </title>
</head>
<body>
<?php
if (!isset($quien)): ?>
<html>
<head>
<title> Ejemplo de switch </title>
</head>
<body>
Para este fin se creara un ejercicio, en la cual se creara una tabla llamada
prueba con 3 campos: un campo identificador, que servirá para identificar
unívocamente una fila con el valor de dicho campo, otro campo con el nombre
de una persona y por último un campo con el apellido de la persona. Para crear
la tabla se puede utilizar la herramienta de administración de MySQL del
servidor web o se puede escribir un fichero de texto con el contenido de la
sentencia SQL equivalente y luego decirle al motor de base de datos que la
ejecute con la siguiente instrucción:
mysql -u root base_datos <prueba.sql
prueba.sql:
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("base_datos",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
<!-- Senati -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD> Nombre</TD><TD> Apellidos </TD></TR>
<?php while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </td></tr>",
$row["Nombre"],$row["Apellidos"]);
}
mysql_free_result($result);
mysql_close($link);
?></table>
</body>
</html>
Insertar registros.
Para ello se usara un formulario y en el ACTION del FORM <FORM
ACTION=”programaPHP”> indicar que se debe procesar una página PHP, esta
página lo que hará será introducir los datos del formulario en la base de datos.
<!-- Senati -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
include("conex.phtml");
$link=Conectarse();
$nombre=$_GET['nombre'];
$apellidos=$_GET['apellidos'];
mysql_query("insert into prueba (Nombre,Apellidos) values
('$nombre','$apellidos')",$link);
header("Location: ejem07d.phtml");
?>
Borrar registros.
Para indicar que elemento se va a borrar se debe de pasar el ID_Prueba de
cada registro, de esta manera la página borra.phtml sabe que elemento de la
tabla ha de borrar.
ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN 231
LENGUAJE DE PROGRAMACIÓN III
Formulario de Datos:
Algo muy común en un panel de administración Web es la capacidad de
insertar contenidos en un formulario y pasarlos directamente a la base de datos
para su posterior uso en la base de datos. El formulario no debe cumplir ningún
requisito especial, únicamente el atributo action debe apuntar al script que
procesará la información.
<form name="webtaller" action="insertar_datos.php" method="post">
Título: <input type="text" name="titulo"><br>
Contenido: <textarea name="contenido"></textarea><br>
<input type="enviar" value="Enviar">
</form>
$link = mysql_connect("localhost","usuario","contraseña");
mysql_select_db("webdb",$link);
// Con esta sentencia SQL insertaremos los datos en la base de datos
mysql_query("INSERT INTO noticias (titulo,contenido)
VALUES ('{$_POST['titulo']}','{$_POST['contenido']}')",$link);
// Ahora comprobaremos que todo ha ido correctamente
$my_error = mysql_error($link);
if(!empty($my_error) {
echo "Ha habido un error al insertar los valores. $my_error";
} else {
echo "Los datos han sido introducidos satisfactoriamente";
}
} else {
echo "Error, no ha introducido todos los datos";
}
?>
<body>
<div class="group">
<form action="registro.php" method="POST">
<h2><em>Formulario de Registro</em></h2>
<label for="apellido">Apellido
<span><em>(requerido)</em></span></label>
<input type="text" name="apellido" class="form-input"
required/>
registro
<?php
$db_host="localhost";
$db_user="nombre_de_usuario";
$db_password="contraseña";
$db_name="nombre_de_base_de_datos";
$db_table_name="nombre_de_tabla";
$db_connection = mysql_connect($db_host, $db_user, $db_password);
if (!$db_connection) {
die('No se ha podido conectar a la base de datos');
}
$subs_name = utf8_decode($_POST['nombre']);
$subs_last = utf8_decode($_POST['apellido']);
$subs_email = utf8_decode($_POST['email']);
mysql_select_db($db_name, $db_connection);
$retry_value = mysql_query($insert_value, $db_connection);
if (!$retry_value) {
die('Error: ' . mysql_error());
}
header('Location: Success.html');
}
mysql_close($db_connection);
?>