1 / 45

El Lenguaje

El Lenguaje. Conceptos básicos. Reglas de codificación: División de una instrucción en varias líneas. ( _ ) Combinar varias instrucciones en una línea. ( : ) Agregar comentarios al código. ( ‘ ) Sistemas de numeración: Decimal. Hexadecimal. ( &H ) Octal. ( &O ).

haru
Télécharger la présentation

El Lenguaje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. El Lenguaje Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  2. Conceptos básicos. • Reglas de codificación: • División de una instrucción en varias líneas. ( _ ) • Combinar varias instrucciones en una línea. ( : ) • Agregar comentarios al código. ( ‘ ) • Sistemas de numeración: • Decimal. • Hexadecimal. ( &H ) • Octal. ( &O ) Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  3. Convenios de nomenclatura para variables. • Comenzar por una letra • Longitud menor de 256 caracteres • Nombres descriptivos • Comenzar con mayúscula • No utilizar nombres claves como nombre de variables • Comenzar con abreviatura del tipo de la variable, cuando se trata de objetos Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  4. Tipos de Datos predefinidos Booleana (2) Admite los valores 0 y 1, o True y False Byte (1) Números enteros, en el rango de 0 a 255 Integer (2) % Enteros en el rango de -32768 a 32767 Long (4) & Enteros de -2147483648 a 2147483647 Single (4) ! Punto flotante, simple precisión Double (8) # Punto flotante, doble precisión. Currency (8) @ Entero punto decimal fijo (Típico de monedas) String (*) $ Cadenas alfanuméricas Date (8) Fechas Object (4) Referencia a objetos Variant (**) Otros tipos de datos Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  5. Declaraciones de variables y constantes Tipos de declaraciones de variables Dim: Private: Public: Global: Static: • Constantes: • Const • Error en la declaración de variables: • Dim var1, var2, ... ,varN As Integer Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  6. Funciones de conversión de tipos de datos: Cbool  Boolean Cbyte  Byte Ccur  Currency Cdate  Date CDbl  Double Cint  Integer CLng  Long CSng  Single CStr  String Cvar  Variant CVErr  Error !! Cuidado al tratar de convertir contenidos de cajas de texto a números y éstas están vacías ¡¡ Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  7. Operadores aritméticos: + Suma - Resta * Multiplicación / División decimal \ Cociente de una división entera Mod Resto de una división entera ^ Potencia Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  8. Operadores Lógicos And Función AND A=True y B=True Cualquier otro caso Or Función OR A=True o B=True A=False y B=False Xor Función XOR A=True y B=False A=True y B=True A=False y B=True A=False y B=False Eqv F. Equivalente A=True y B=True A=True y B=False A=False y B=False A=False y B=True Imp Implicación A=True y B=True A=True y B=False A=False y B=True A=False y B=False Not Negación A=False A=True Like Igualdad A=True A=False Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  9. Funciones matemáticas. CintDevuelve la parte entera de un número condecimales Abs Devuelve el valor absoluto de un número Sgn Devuelve el signo de un número Sqr Devuelve la raíz cuadrada de un número Exp Devuelve el número elevado al exponente indicado Log Devuelve el logaritmo natural de ese número Timer Devuelve el tiempo (sg) que ha pasado desde las 12 de lanoche Sin Devuelve el valor del seno de un ángulo Cos Devuelve el coseno de un ángulo Tan Devuelve la tangente de un ángulo Atn Devuelve un arco cuya tangente sea el número !! Cuidado las funciones trigonométricas operan con radianes ¡¡ Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  10. Funciones trigonométricas derivadas SecanteSec(X) = 1 / Cos(X) CosecanteCosec(X) = 1 / Sin(X) CotangenteCotan(X) = 1 / Tan(X) Seno -1Arcsin(X) = Atn(X / Sqr(-X * X + 1)) Coseno -1Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) Secante -1Arcsec(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1)) Cosecante -1Arccosec(X) = Atn(X / Sqr(X * X – 1)) + (Sgn(X) – 1) * (2 * Atn(1)) Cotangente -1Arccotan(X) = Atn(X) + 2 * Atn(1) !! No existe una constante que represente el número pi, pero se calcula fácilmente como 4 * Atn(1) ¡¡ Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  11. Funciones trigonométricas hiperbólicas Seno hiperbólicoHSin(X) = (Exp(X) – Exp(–X)) / 2 Coseno hiperbólicoHCos(X) = (Exp(X) + Exp(–X)) / 2 Tangente hiperbólicaHTan(X) = (Exp(X) – Exp(–X)) / (Exp(X) + Exp(–X)) Secante hiperbólicaHSec(X) = 2 / (Exp(X) + Exp(–X)) Cosecante hiperbólicaHCosec(X) = 2 / (Exp(X) – Exp(–X)) Cotangente hiperbólicaHCotan(X) = (Exp(X) + Exp(–X)) / (Exp(X) – Exp(–X)) Seno hiperbólico -1HArcsin(X) = Log(X + Sqr(X * X + 1)) Coseno hiperbólico -1HArccos(X) = Log(X + Sqr(X * X – 1)) Tangente hiperbólica -1HArctan(X) = Log((1 + X) / (1 – X)) / 2 Secante hiperbólica -1HArcsec(X) = Log((Sqr(–X * X + 1) + 1) / X) Cosecante hiperbólica -1HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) Cotangente hiperbólica -1HArccotan(X) = Log((X + 1) / (X – 1)) / 2 !! Recuerda la regla de los logaritmos ¡¡ Logaritmo en base NLogN(X) = Log(X) / Log(N) Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  12. Operaciones con fechas Date Devuelve la fecha de hoy. Esta fecha la toma del reloj del ordenador Time Devuelve la hora actual Now Devuelve la fecha y hora actual. WeekDayDevuelve el día de la semana (En número, 1=Domingo, 2=Lunes,...) DayObtiene el día, a partir de una fecha Month Obtiene el mes a partir de una fecha Year Obtiene el año a partir de una fecha Hour Obtiene la hora a partir de una hora MinuteObtiene el minuto a partir de una hora SecondObtiene el segundo a partir de una hora DateAdd Añade un intervalo de tiempo a una fecha DateDiffObtiene el intervalo de tiempo entre dos fechas DatePartDevuelve una parte de una fecha (semana, trimestre, etc.) DateSerial Compone una fecha a partir de parámetros relativos TimeSerial Compone una hora a partir de parámetros relativos DateValueDevuelve una fecha a partir de un dato que se le parezca y que VB puedaobtener de él una fecha válida Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  13. Sentencias de control Condicionales: • If <condición> Then • .... • End If • If <condición> Then • .... • Elseif <condición> Then • .... • Elseif <condición> Then • .... • Else • .... • End If Select Case var Case 1 ... Case Is ( operador) xx .... Case 2 ... Case xx To xx .... Case N .... Case Else .... End Select • If <condición> Then • .... • Else • .... • End If Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  14. Ejemplo de utilización de las sentencias if else • Determinar si un punto definido por sus coordenadas en el plano (x,y) pertenece a un círculo definido por su centro (xc,yc) y su radio Dim x As Double, y As Double Dim xc As Double, yc As Double, radio As Double Dim DisCentro As Double DisCentro = sqrt ( (x – xc)^2 + (y –yc)^2)If DisCentro <= radio Then msgbox “El punto pertenece al círculo” Else msgbox “El punto no pertenece al círculo” End If Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  15. Ejemplo de utilización condicionales simples • Se trata de calcular el área de un triángulo conocidos sus tres lados. ( fórmula de Heron) Sup = sqr( sp * (sp – a) * (sp – b) * (sp – c)) donde sp = Semiperímetro = (a + b + c)/2 Posible problema: El triángulo no esté definido Se dará si sp < a ó sp < b ó sp < c Dim a As Double, b As Double, c As Double, sp As Double, sup As Double sp = ( a + b + c ) /2 If sp > a And sp > b And sp > c Then sup = sqr( sp * (sp – a) * (sp – b) * (sp – c)) msgbox “ La superficie del triángulo es “ & sup Else msgbox “ El triángulo no existe” End If Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  16. Ej. de utilización de if else con múltiples condiciones • Se pretende determinar si un punto en el plano pertenece a una región rectangular paralela a los ejes cartesianos. Se conoce las coordenadas del punto y las coordenadas mínimas y máximas de la región en los dos ejes Dim x As Double, y As Double Dim xmax As Double, xmin As Double, ymin As Double, ymax As Double If x >= xmin And x <= xmax And y >= ymin And y <= ymax Then msgbox “El punto pertenece a la región” Else msgbox “El punto no pertenece a la región” End If Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  17. Ejemplo de utilización de If Else anidados • Se trata de mostrar un mensaje indicando a banda del espectro electromagnético pertenece una determinada longitud de onda l expresado en mm Dim l as Single If l < 0.3 Then msgbox “Pertenece al Ultravioleta” ElseIf l < 0.4 Then msgbox “Pertenece al Azul” ElseIf l < 0.5 Then msgbox “Pertenece al Verde” ElseIf l < 0.6 Then msgbox “Pertenece al Rojo” Else msgbox “Pertenece al InfraRojo” End If Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  18. Ejemplo de utilización de Select Case • Se trata de diferenciar una operación matemática en función del contenido de una variable de tipo cadena de caracteres, para simular una calculadora con las funciones + - * / Dim Operando1 As Double, Operando2 As Double, Resultado As Double Dim Operación As String Select case (Operación) Case “+” : Resultado = Operando1 + Operando2 : break; Case “-” : Resultado = Operando1 - Operando2 : break; Case “*” : Resultado = Operando1 * Operando2 : break; Case “/” : Resultado = Operando1 / Operando2 : break; Case Else : msgbox “La operación no está definida” End Select Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  19. Sentencias de Control Repeticiones: Do While <condición > .... Loop Do .... Loop While <condición > While <condición> .... Wend Exit Do Do Until <condición > .... Loop Do .... Loop Until <condición > For Each elemento In grupo ..... Next elemento For <cond inicial > To <cond final > Step ... ..... Next ... Exit For Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  20. Ejemplos con las sentencias repetitivas • Algoritmo que genere los número impares entre el 1 y el 15, mostrándolo mediante una ventana de mensajes Dim i As Integer For i = 1 To 15 Step 2 Msgbox i Next i Valores de i 1 3 5 7 9 11 13 15 Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  21. Ejemplos de sentencias repetitivas. • Calcular la suma de los números 3 al 15 Dim i As Integer Dim Sum As Long ‘ Se inicializa la variable a 0 Sum = 0 For i = 3 To 15 Sum = Sum + i Next i • Calcular el producto de los números 2 al 15 • Dim i As Integer • Dim Prod As Long • ‘ Se inicializa la variable a 1 • Prod = 1 • For i = 2 To 15 • Prod = Prod * i • Next i Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  22. Ejemplo de utilización de sentencias repetitivas • Se pretende determinar si un número es primo o no • Consideraciones prácticas: Un número será primo si no es divisible por los números inferiores a él. Hay que probar si es divisible por 2, 3, ... Hasta llegar a el propio valor o por el contrario si se puede dividir por uno de estos números inferiores no es primo (es divisible). Se utiliza la operación resto de división entera para saber si es divisible o no Dim Num As Integer, i As Integer For i = 2 To Num If (Num Mod i) = 0 Then Exit For Next i If i = Num Then msgbox “El número “ & Num & “ es primo” Else msgbox “El número “ & Num & “ no es primo es divisible por “ & i End If Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  23. Medidas repetidas. Valor más probable y Tolerancias. • Se trata de construir el programa que determine la medida más probable de modo que se eliminen las medidas que superen el umbral de tolerancias de 2,5 veces el error cuadrático medio. El proceso se repetirá hasta que todas las medidas estén dentro de este rango Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  24. Matrices • Creación: • Dim matriz( N , M, ...., L ) As tipo • Establecer límites inferior y superior. • Dim matriz( x To y, z to w) As tipo • Conocer límites: • Lbound() , Ubound() • Redimensionar matrices. • Redim matriz( , ..., )... • Redimensionar preservando valores. • Redim preserve matriz ( ,.., )... • Definir primer índice de una matriz • Option base {0 | 1 } Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  25. Ejemplo de utilización de matrices numéricas • Se trata de construir un algoritmo que cree una matriz de números reales, pida los valores mediante la llamada a la función inputbox, y calcule la media de los valores almacenados, y también su varianza. Estos dos datos deben ser mostrados en pantalla Dim Num(10) As Double,Media As Double, Varianza As Double Dim i As Integer Media = 0 : Varianza = 0 For i=0 To 10 Num(i) = CDbl(inputbox(“Introduzca el valor “ & i )) Media = Media + Num(i) Next i Media = Media / 10 For i = 0 To 10 Varianza = Varianza + (Media – Num(i))^2) Next i Varianza = Varianza / 10 msgbox “La media = “ & Media & “ y la Varianza = “ & Varianza Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  26. Ejemplo de utilización de matrices bidimensionales con bucles anidados • Se trata de rellenar una matriz bidimensional de 3 filas * 3 columnas con datos procedentes de teclado Option Base 1 Dim Mat(3,3) As Double Dim i As Integer, j As Integer For i = 1 To 3 For j = 1 To 3 Mat(i,j) = CDbl(inputbox “Dato(“ & i & “,” & j & “) Next j Next i Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  27. Ejemplo Bucle For (Area de un polígono conocidas las coordenadas de los vértices) • Si se dispone de las coordenadas ordenadas de los vértices de un polígono se puede calcular la superficie del mismo con la fórmula de Simpson • Sean Xi e Yi las coordenadas cartesianas del vértice i-ésimo Sup = 0.5 * Si ( X i+1 – Xi) * (Y i+1 + Yi) • Nota: Téngase en cuenta que el último punto debe cerrar con el primero Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  28. Función InputBox • La sintaxis de la función es: InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context]) Retorna el valor textual que el usuario ha suministrador por la caja de texto de la ventana Se puede convertir al formato adecuado para almacenarlo en la variable correspondiente Ejemplo: N = Cint(InputBox("¿Cuantas distancias?", "Nº observaciones")) Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  29. Matrices de controles • Las matrices de controles permiten agrupar los nombres de los elementos de la interfaz gráfica de usuario en forma de matriz para poder gestionarlos más cómodamente en el código. Tiene sentido utilizar las matrices de controles cuando lo que se debe ejecutar como consecuencia de un evento sobre el mismo es similar o se puede adaptar en función del número asociado a la fila del control. • Ejemplo: los números de una calculadora. Se puede crear una matriz de controles de tipo command Boton llamada Num() de forma que el índice sea el valor numérico del botón gráfico. Cuando se produzca el evento click, al ser una matriz de controles se dispondrá de dicho índice y se podrá añadir al display el dígito seleccionado Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  30. Carga/descarga dinámica de controles (en matrices). • Una ventaja adicional a la hora de utilizar matrices de controles es que se puede tener un número variable de ellos cargados y/o visibles. • Cuando se desea cargar un nuevo elemento de la matriz de controles se utiliza la instrucción Load, y para descargarlo la instrucción Unload. • Ejemplo de carga de 10 controles de tipo TextBox cuyo primer elemento ya está definido. Dim i As Integer For i = 1 To 10 Load MatTextBox(i) Next i Inconveniente: Se crea con las mismas propiedades que el primero existente. Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  31. Matrices de controles. Otro ejemplo. • Se trata de construir una calculadora matricial básica con las operaciones + - * y Traspuesta. Se desea que pueda manejar matrices de números compatibles para dichas operaciones, pero que pueda ser variable en cuanto al número de elementos de cada dimensión. Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  32. Definición de nuevos tipos de datos • Objetivo: Agrupar bajo un tipo de dato un conjunto de información que no es homogénea. • Se define el prototipo de registro que contendrá los nombres de los campos y los tipos de los mismos. Type <nombre_tipo > <campo > As <tipo_campo > <campo > As <tipo_campo > End Type Declaración de variable Dim Director As Empleado Uso de un campo de la variable Director.Nombre = “Juan Luis” Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  33. Ejemplo de Tipos de datos definidos por usuario con matrices. • Se pretende mantener en memoria una agenda con las notas de los alumnos de primer curso de Topografía. Se tiene que almacenar el Nombre y los Apellidos del alumno, su Dni y las calificaciones de las 7 asignaturas de primer curso, junto con la calificación media de las mismas. • Se podrá redimensionar la matriz que contiene los datos manteniendo la información de la misma, y según se desplace por la matriz se mostrarán los datos actuales almacenándose los que se estaban mostrando anteriormente. Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  34. Convenios para los menús • Títulos cortos. • Asignar tecla de método abreviado. • Si se trata de interruptor mostrar marca de verificación. • Mostrar (....) si hace falta intervención. • Utilizar prefijo mnu e Item. Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  35. Funciones y Procedimientos • Objetivo: Modularidad. • Función: Puede retornar resultados. • Procedimiento: No retorna se usa con Call • Función: [Static][Private] Function nombre ([parámetros])[As tipo] [sentencias] [nombre = expresión] [Exit Function] .. End Function • Procedimiento: [Static][Private] Sub nombre ([parámetros]) [sentencias] [Exit Sub] .. End Sub • Parámetros por valor ByVal , por referencia (defecto) Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  36. Controles ComboBox y ListBox • Propiedades y métodos importantes: • Text : Información mostrada como seleccionada. • List(n) : Lista de elementos textuales. • ListCount : Nº total de elementos de la lista. • ListIndex: Posición seleccionada. • AddItem: Permite añadir en tiempo de ejecución elementos. • RemoveItem: Permite eliminar en tiempo de ejecución elementos. • ItemData: Permite establecer un nº a cada fila de la lista. • Evento Click. El más usado. • Ejemplo uso: objeto.List(objeto.ListIndex) Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  37. Control CommondDialog • Permite: • Seleccionar nombres de archivos para Abrir y Guardar información, Seleccionar colores y fuentes de textos así como opciones de impresión y ayuda. • Métodos: • ShowOpen, ShowSave, ShowColor, ShowFont, ShowPrinter, ShowHelp. • Propiedades Ficheros: • Filter, FilterIndex, FileName y DefaultExt. • Propiedades Color: • Flags y Color. • Propiedades Texto: • Color, FontName, FontItalic, FontUnderLine, FontSize... • Impresoras: • Copies, FromPage, ToPage, Orientation Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  38. Control Data • Permite: • Realizar una conexión con una base de datos. • Recorrer una tabla seleccionada por medio de RecordSet. Propiedades: Caption. Connect. Tipo de BD. DatabaseName. Nombre de la BD. ReadOnly. Determina los permisos sobre los datos. RecordsetType. Selecciona entre Tabla, dynaset.. RecordSource: Establece la tabla de la BD. Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  39. RecordSet • Consultar datos. • BOF (principio), EOF (fin), RecordCount y NoMatch. • Modificar registros. • AddNew, Edit, Update, Delete. • Moverse por la base de datos. • MoveFirst, MoveNext, MovePrevious, MoveLast. • Encontrar datos. • FindFirst, FindLast, FindNext, FindPrevious. Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  40. Estructura de trabajo en Bases de datos: DBEngine WorSpaces() (prop .count, met .Append, .Delete, .Refresh) WorkSpace. Connections() Groups() Users() DataBases().(propiedad .Count, método .Refresh) Database RecordSets(). -> Recordset. -> Fields Tabledefs(). .Count-> TableDef. ->Fields, Indexes Relations(). -> Relation. -> Fields Querydefs(). ->QueryDef. -> Parameters, Fields Containers(). -> Container. -> Document Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  41. WorkSpace • Métodos: • Close • CreateDatabase • CreateGroup • CreateUser • CreateConnection • OpenDatabase • Rollback Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  42. DataBase • Métodos: • Close • CreateTableDef • Execute • NewPassword • OpenRecordSet Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  43. Propiedades: EOF Filter Index Name NoMatch RecordCount RecordStatus Sort Type Métodos: AddNew Clone Close Delete Edit FindFirst Move GetRows MoveFirst NextRecordSet OpenRecordSet Seel Update RecordSet Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  44. Creación de una nueva base de datos. • Conectar con un espacio de trabajo • Set Ws =DBEngine.Workspaces(0) • Crear base de datos. • Set NewDB = Ws.CreateDatabase( nombre,lenguaje,,,) • Crear Tabla (objeto TableDef, método CreateTableDef) • Crear Campos tabla. (Objetos Field, método CreateField) • Asignar campos a tabla. (método Append) • Asignar tabla sobre base de datos. (método Append) • .... • Cerrar base de datos. (método Close) Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

  45. Ejemplo Dim NewDb As Database Dim Ws As Workspace Set Ws = DBEngine.Workspaces(0) Set NewDb = Ws.CreateDatabase(CommonDialog1.FileName, dbLangGeneral) Dim NewTb As TableDef Set NewTb = NewDb.CreateTableDef("observaciones") ReDim campo(1 To 7) As Field Set campo(1) = NewTb.CreateField("Número estación", dbLong) Set campo(2) = NewTb.CreateField("Número visado", dbLong) ... Dim i As Byte For i = 1 To 7 NewTb.Fields.Append campo(i) Next i NewDb.TableDefs.Append NewTb NewDb.Close Visual Basic. El Lenguaje. Miguel Ángel Manso Callejo

More Related