Ver Mensaje Individual
  #17 (permalink)  
Antiguo 25/03/2010, 09:57
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Error en codigo RANDOM

He pegado tu código. Solo he anulado lo que trabajaba con los textbox que no he creado.
Te lo pongo:

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Type D_clientes
  4.  
  5. 'Variables cliente de contacto
  6. nombre As String * 20
  7. apellido1 As String * 20
  8. apellido2 As String * 20
  9. telefono As String * 20
  10. movil As String * 20
  11. fax As String * 20
  12. email As String * 30
  13. cargo As String * 15
  14.  
  15. 'Variables empresa
  16. empresa As String * 25
  17. cif As String * 15
  18. direccion As String * 25
  19. NR As String * 5
  20. puerta As String * 5
  21. poligono As String * 25
  22. localidad As String * 25
  23. ciudad As String * 20
  24. codpostal As String * 10
  25. pais As String * 15
  26. nrcliente As Integer
  27.  
  28. End Type
  29.  
  30. 'Variables para utilizar la estructura anterior
  31.  
  32. Dim cliente As D_clientes
  33. Dim clienteTemp As D_clientes
  34.  
  35. 'Variables para el archivo de los datos de D_clientes y temporal
  36. Dim FileFree As Integer
  37. Dim FileTemp As Integer
  38.  
  39. 'Variables para la posición del primer y último registro
  40. Dim RegActual As Long
  41. Dim RegUltimo As Long
  42. ' Variable para la posición Temporal del registro
  43. Dim RegActualTemp As Long
  44.  
  45. Dim Pos As Integer, p As Integer
  46.  
  47. '######################################################
  48. 'Funciones y procedimientos
  49. '######################################################
  50.  
  51.  
  52.  
  53. ' Subrutina que guarda los datos en el archivo
  54. '#############################################
  55.  
  56. Private Sub GuardarDatos()
  57.  
  58. 'Asignamos los datos de la estructura con el contenido de los textBox
  59. With cliente
  60.  
  61.      'Variables cliente de contacto
  62. .nombre = txt_nombre.Text
  63. .apellido1 = txt_apellido1.Text
  64. .apellido2 = txt_apellido2.Text
  65. .telefono = txt_telefono.Text
  66. .movil = txt_movil.Text
  67. .fax = txt_fax.Text
  68. .email = Trim(txt_email)
  69. .cargo = txt_cargo.Text
  70.  
  71. 'Variables empresa
  72. .empresa = txt_empresa.Text
  73. .cif = txt_cif.Text
  74. '.direccion = txt_direccion.Text
  75. '.NR = txt_NR.Text
  76. '.puerta = txt_puerta.Text
  77. '.poligono = txt_poligono.Text
  78. '.localidad = txt_localidad.Text
  79. '.ciudad = txt_ciudad.Text
  80. '.codpostal = txt_codpostal.Text
  81. '.pais = txt_pais.Text
  82. '.nrcliente = txt_nrcliente.Text
  83.  
  84. End With
  85.  
  86. 'Escribimos los datos en el archivo y en la posición
  87. Put #FileFree, RegActual, cliente
  88. End Sub
  89.  
  90. ' Subrutina que Visualiza los datos en los textBox
  91. '##################################################
  92.  
  93. Private Sub VisualizarDatos()
  94.  
  95. 'Lee del fichero en el registro posicionado y almacena los datos _
  96. en la la variable UDT
  97. Get #FileFree, RegActual, cliente
  98.  
  99. ' Mostramos los datos en las cajas de texto
  100. With cliente
  101.  
  102. 'Variables cliente de contacto
  103.     txt_nombre = Trim(.nombre)
  104.      txt_apellido1 = Trim(.apellido1)
  105.      txt_apellido2 = Trim(.apellido2)
  106.      txt_telefono = Trim(.telefono)
  107.      txt_movil = Trim(.movil)
  108.      txt_fax = Trim(.fax)
  109.      txt_email = Trim(.email)
  110.      txt_cargo = Trim(.cargo)
  111.  
  112. 'Variables empresa
  113.     txt_empresa = Trim(.empresa)
  114.      txt_cif = Trim(.cif)
  115. '     txt_direccion = Trim(.direccion)
  116. '     txt_NR = Trim(.NR)
  117. '     txt_puerta = Trim(.puerta)
  118. '     txt_poligono = Trim(.poligono)
  119. '     txt_localidad = Trim(.localidad)
  120. '     txt_ciudad = Trim(.ciudad)
  121. '     txt_codpostal = Trim(.codpostal)
  122. '     txt_pais = Trim(.pais)
  123. '     txt_nrcliente = .nrcliente
  124.  
  125.  
  126. End With
  127.  
  128. 'Mostramos en el control Label la posición del registro actual _
  129. y la cantidad  o Total de registros que hay en el archivo
  130. lbl_status.Caption = "    Reg. Actual.:" & CStr(RegActual) & vbNewLine _
  131.                     & "Total registros.:" & CStr(RegUltimo)
  132.  
  133. End Sub
  134.  
  135.  
  136.  
  137. 'Botón que elimina un registro del archivo
  138. '############################################
  139.  
  140. Private Sub cmd_eliminar_Click()
  141.  
  142.  
  143. Pos = RegActual
  144.  
  145. If MsgBox(" Está seguro de eliminar el cliente ? ", vbYesNo) = vbNo Then
  146.  
  147. txt_empresa.SetFocus
  148.  
  149. Exit Sub
  150. End If
  151.  
  152. ' Verificamos que el archivo temporal no exista, si existe se elimina
  153. If Dir("Temporal.tmp") = "Temporal.tmp" Then
  154. Kill "Temporal.tmp"
  155. End If
  156.  
  157. FileTemp = FreeFile
  158. 'Abrimos y creamos un nuevo fichero temporal
  159. Open "Temporal.tmp" For Random As FileTemp Len = Len(clienteTemp)
  160.  
  161. RegActual = 1
  162. RegActualTemp = 1
  163.  
  164. 'Se recorren los registros del archivo
  165.  
  166. For p = 1 To RegUltimo - 1
  167.  
  168.     Get #FileFree, RegActual, cliente
  169.    
  170.     'Este es el registro que se elimina
  171.    If RegActualTemp = Pos Then
  172.         RegActual = RegActual + 1
  173.     End If
  174.    
  175.     Get #FileFree, RegActual, cliente
  176.  
  177.  
  178.     With clienteTemp
  179.    
  180.         'Variables cliente de contacto
  181.        .nombre = Trim(cliente.nombre)
  182.         .apellido1 = Trim(cliente.apellido1)
  183.         .apellido2 = Trim(cliente.apellido2)
  184.         .telefono = Trim(cliente.telefono)
  185.         .movil = Trim(cliente.movil)
  186.         .fax = Trim(cliente.fax)
  187.         .email = Trim(cliente.email)
  188.         .cargo = Trim(cliente.cargo)
  189.  
  190.         'Variables empresa
  191.       .empresa = Trim(cliente.empresa)
  192.         .cif = Trim(cliente.cif)
  193.         .direccion = Trim(cliente.direccion)
  194.         .NR = Trim(cliente.NR)
  195.         .puerta = Trim(cliente.puerta)
  196.         .poligono = Trim(cliente.poligono)
  197.         .localidad = Trim(cliente.localidad)
  198.         .ciudad = Trim(cliente.ciudad)
  199.         .codpostal = Trim(cliente.codpostal)
  200.         .pais = Trim(cliente.pais)
  201.         .nrcliente = cliente.nrcliente
  202.  
  203.        
  204.     End With
  205.    
  206.     'Escribe en el archivo temporal los datos
  207.    
  208.     Put #FileTemp, RegActualTemp, clienteTemp
  209.  
  210.     RegActual = RegActual + 1
  211.     RegActualTemp = RegActualTemp + 1
  212.  
  213. Next
  214.  
  215.  
  216. Close FileFree
  217. 'Elimina el archjivo con los datos
  218. Kill "Datos.dat"
  219. Close FileTemp
  220.  
  221. 'Renombra el archivo temporal a Datos.dat
  222. Name "Temporal.tmp" As "Datos.dat"
  223.  
  224.  
  225. ' Mostramo los datos en los textbox
  226. Cargar
  227. RegActual = Pos
  228. VisualizarDatos
  229.  
  230. End Sub
  231.  
  232. 'Botón que guarda un registro en el archivo
  233. '############################################
  234.  
  235. Private Sub cmd_guardar_Click()
  236. GuardarDatos
  237. End Sub
  238.  
  239. 'Botón para salir de la aplicación.
  240. '############################################
  241.  
  242. Private Sub cmd_salir_Click()
  243. 'Guarda los cambios en el archivo antes de salir
  244. GuardarDatos
  245.  
  246. 'cierra el archivo abierto
  247. Close #FileFree
  248. End
  249. End Sub
  250.  
  251.  
  252. Private Sub Form_Load()
  253. 'Carga el primer registro del archivo
  254. Cargar
  255. 'Selecciona en el combo para la búsqueda de datos
  256. cmb_buscar = cmb_buscar.List(0)
  257.  
  258. 'Cargarcaptions
  259.  
  260. End Sub
  261.  
  262. Private Sub cmd_Siguiente_click()
  263.  
  264. If RegActual = RegUltimo Then
  265.     MsgBox " Ultimo registro ", vbInformation
  266. Else
  267. 'Incrementa la posición
  268. RegActual = RegActual + 1
  269. 'Cargamos los datos en el textbox del siguiente registro
  270. VisualizarDatos
  271. End If
  272. txt_nombre.SetFocus
  273. End Sub
  274.  
  275. 'Botón para posicionar en el Anterior registro
  276. '##############################################
  277.  
  278. Private Sub Cmd_Anterior_click()
  279.  
  280. If RegActual = 1 Then
  281.     MsgBox " Primer registro ", vbInformation
  282. Else
  283.     'Decrementamos la variable que mantiene la posición del registro actual
  284.    RegActual = RegActual - 1
  285.     'Mostramos los datos en las cajas de texto
  286.    VisualizarDatos
  287. End If
  288.  
  289. txt_nombre.SetFocus
  290.  
  291. End Sub
  292.  
  293.  
  294. Private Sub Cargar()
  295.  
  296. FileFree = FreeFile
  297. Open "Datos.dat" For Random As FileFree Len = Len(cliente)
  298.  
  299. RegActual = 1
  300. ' Almacenamos la posición del último registro
  301. RegUltimo = LOF(FileFree) / Len(cliente)
  302.  
  303. If RegUltimo = 0 Then
  304. RegUltimo = 1
  305. End If
  306.  
  307. 'Cargamos los datos en los Textbox
  308. VisualizarDatos
  309. End Sub
  310.  
  311. 'Botón que agrega un nuevo registro
  312. '#####################################
  313.  
  314. Private Sub cmd_nuevo_click()
  315.  
  316. RegUltimo = RegUltimo + 1
  317.  
  318.  
  319. 'Limpia los datos de la estructura para poder agregar un nuevo registro
  320. With cliente
  321.     'Variables cliente de contacto
  322.        .nombre = ""
  323.         .apellido1 = ""
  324.         .apellido2 = ""
  325.         .telefono = ""
  326.         .movil = ""
  327.         .fax = ""
  328.         .email = ""
  329.         .cargo = ""
  330.  
  331.         'Variables empresa
  332.        .empresa = ""
  333.         .cif = ""
  334.         .direccion = ""
  335.         .NR = ""
  336.         .puerta = ""
  337.         .poligono = ""
  338.         .localidad = ""
  339.         .ciudad = ""
  340.         .codpostal = ""
  341.         .pais = ""
  342.         .nrcliente = ""
  343.  
  344. End With
  345.  
  346. ' Graba datos vacios en el nuevo registro hasta que se presione el botón _
  347. Guardar que graba los verdaderos datos
  348. Put #FileFree, RegUltimo, cliente
  349.  
  350. RegActual = RegUltimo
  351.  
  352.  
  353. VisualizarDatos
  354. txt_empresa.SetFocus
  355. End Sub
  356.  
  357. 'Botón para Buscar datos
  358. '##############################################
  359.  
  360. Private Sub cmd_buscar_click()
  361.  
  362. Dim Encontrado As Boolean, PosReg As Long, tmp As D_clientes
  363.  
  364. If txt_buscar = "" Then txt_empresa.SetFocus: Exit Sub
  365.  
  366. Encontrado = False
  367.  
  368. 'Recorremos desde el primer hasta el último en busca del registro a buscar
  369.  
  370. For PosReg = 1 To RegUltimo
  371.  
  372. 'Leemos el registro
  373. Get #FileFree, PosReg, tmp
  374.  
  375. 'Si es el dato es igual salimos del bucle
  376. If UCase(txt_buscar) = UCase(Trim(BuscarPor(tmp))) Then
  377.     Encontrado = True
  378.     Exit For
  379. End If
  380.  
  381. Next
  382.  
  383. If Encontrado Then
  384.    
  385.     RegActual = PosReg
  386.     'Cargamos los datos en los text
  387.    VisualizarDatos
  388.  
  389. Else
  390.     MsgBox "nombre: " & txt_buscar & " No se ha encontrado el registro"
  391. End If
  392. txt_empresa.SetFocus
  393.  
  394. End Sub
  395.  
  396. 'Función que retorna el valor de la búsqueda
  397. '#############################################
  398.  
  399.  
  400. Private Function BuscarPor(t As D_clientes)
  401.  
  402. Select Case cmb_buscar.ListIndex
  403.  
  404. Case 0: BuscarPor = t.empresa
  405. Case 1: BuscarPor = t.cif
  406. 'Case 2: BuscarPor = t.nrcliente
  407.  
  408. End Select
  409.  
  410. End Function

PD: Bueno... también he añadido siguiente y anterior para poder hacer pruebas...
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!