Foros del Web » Programación para mayores de 30 ;) » Programación General »

Libreria roo ruby

Estas en el tema de Libreria roo ruby en el foro de Programación General en Foros del Web. Buen dia, soy nuevo en el foro, tengo un pequeño problema con el lenguaje ruby, apenas lo empeze a tratar, espero saber explicarme, primero les ...
  #1 (permalink)  
Antiguo 14/05/2014, 12:50
 
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 10 años
Puntos: 0
Pregunta Libreria roo ruby

Buen dia, soy nuevo en el foro, tengo un pequeño problema con el lenguaje ruby, apenas lo empeze a tratar, espero saber explicarme, primero les pondre el codigo ejemplo:

require 'rubygems'
require 'roo'
require 'fileutils'
require 'find'
require 'date'

archivos = '#Directorio de archivos#'

puts "Ingresa la fecha solicitada: "
STDOUT.flush
time = gets.chomp

Dir.foreach(archivos) do |file|
if File.extname(file) == ".xls"
s=Roo::Excel.new(archivos + file)
s.default_sheet = s.sheets.first

18.upto(444) do |line|
ID =s.cell('A',1)
DAY = s.cell(line,'A')
LOGBOOK_NUMBER = s.cell(line,'B')
TOTALFT = s.cell(line,'BG')
TOTAL_LANDINGS = s.cell(line,'BH')
TOTAL_TE1 = s.cell(line,'BJ')
TOTAL_TE2 = s.cell(line,'BR')
CYCLES_NG_E1 = s.cell(line,'BK')
CYCLES_NP_E1 = s.cell(line,'BL')
CYCLES_NG_E2 = s.cell(line,'BS')
CYCLES_NP_E2 = s.cell(line,'BT')
ACTIVE_DAYS = s.cell(line,'ES')
IDLE_DAYS = s.cell(line,'EU')
FECHA = s.cell(line,'EV')
var =["ID","DAY","LOGBOOK_NUMBER","TOTALFT","TOTAL_LANDI NGS","TOTAL_TE1","TOTAL_TE2","CYCLES_NG_E1","CYCLE S_NP_E1","CYCLES_NG_E2","CYCLES_NP_E2","ACTIVE_DAY S","IDLE_DAYS","FECHA"]
var.each do |time|
if time == 'FECHA'
puts "\n#{ID}\n#{DAY}\n#{LOGBOOK_NUMBER}\n#{TOTALFT}\n# {TOTAL_LANDINGS}\n#{ TOTAL_TE1}\n#{TOTAL_TE2}\n#{CYCLES_NG_E1}\n#{CYCLE S_NP_E1}\n#{CYCLES_NG_E2}\n#{CYCLES_NP_E2}\n#{ACTI VE_DAYS}\n#{IDLE_DAYS}\n#{FECHA}"
end
end
end
end
end

quisiera ver si hay un metodo para el cual cuando ingrese la fecha que solicito al principio, cuando me ejecute el archivo , solo me aparezca los datos de las celdas de esa fecha, ya que el programa me muestra todos los datos de los 365 dias del año, les agradeceria su ayuda,
  #2 (permalink)  
Antiguo 14/05/2014, 13:01
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Libreria roo ruby

Bienvenido al foro.

Pues donde compruebas:

Código Ruby:
Ver original
  1. if time == 'FECHA'

Simplemente compruebas también que la fecha dada sea igual a la fecha de la celda. Por ejemplo:

Código Ruby:
Ver original
  1. if time == 'FECHA' && fecha_ingresada == DAY

¿Por qué usas mayúsculas? ¿Sabes que las mayúsculas no son variables? Las variables en ruby se escriben en minúsculas siempre.

Usa la opción highlight para cuando publiques código.
  #3 (permalink)  
Antiguo 14/05/2014, 15:28
 
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 10 años
Puntos: 0
Pregunta Respuesta: Libreria roo ruby

Gracias x responderme a mi problema, pero aun me sigue dando el problema, te muestro como he modificado el codigo y le tome importancia a tu observacion de poner las variables en minuscula y me ha quedado de la siguiente manera, explicare un poco para que sea facil de entender mi asunto; cuando ejecuto el codigo me pide una fecha inicial, entonces se la pongo en este formado "20140202"(yy:mm:dd), el formato es el mismo de la que tiene la celda de excel donde extraigo los datos, pero cuando termina el proceso, me muestra todas las fechas en total, y realmente solo quiero que la fecha q le doy al principio es en donde me muestre los valores de la celda y no el de todos, espero haberme explicado , nuevamente las gracias anticipadas.

Aqui le muestro el codigo:

Código:
require 'rubygems'
  require 'roo'
  require 'fileutils'
  require 'find'
  require 'date'
  
  archivos = '#Directorio del archivo#'
  miEntero='time'
  
  puts "Ingresa la fecha solicitada:  "	  <------Aqui pido la fecha que quiero q me mueestre solamente   
  STDOUT.flush
  time = gets.chomp
 
  Dir.foreach(archivos) do |file|
  if File.extname(file) == ".xls"
	  
    s=Roo::Excel.new(archivos + file)
  s.default_sheet = s.sheets.first
 
18.upto(444) do |line|
    id 	=s.cell('A',1)
    day       = s.cell(line,'A')
    logbook_number = s.cell(line,'B')
    totalft    = s.cell(line,'BG')
    total_landings    = s.cell(line,'BH')
     total_te1    = s.cell(line,'BJ')
      total_te2    = s.cell(line,'BR')
       cycles_ng_e1    = s.cell(line,'BK')
       cycles_np_e1    = s.cell(line,'BL')
       cycles_ng_e2    = s.cell(line,'BS')
       cycles_np_e2    = s.cell(line,'BT')
       active_days    = s.cell(line,'ES')
       idle_days    = s.cell(line,'EU')
    fecha    = s.cell(line,'EV')

  
    var =["id","day","logbook_number","totalaft","total_landings","total_te1","total_te2","cycles_ng_e1","cycles_np_e1","cycles_ng_e2","cycles_np_e2","active_days","idle_days","fecha"]
	var.each do |time|
	if time == 'fecha' && 'fecha'== time
	      			puts "\n#{id}\n#{day}\n#{logbook_number}\n#{totalft}\n#{total_landings}\n#{ total_te1}\n#{total_te2}\n#{cycles_ng_e1}\n#{cycles_np_e1}\n#{cycles_ng_e2}\n#{cycles_np_e2}\n#{active_days}\n#{idle_days}\n#{fecha}"
				end
			end
		end
	end
end
  #4 (permalink)  
Antiguo 14/05/2014, 16:36
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Libreria roo ruby

¿Y no te vale simplemente comparar time y fecha?

Código Ruby:
Ver original
  1. if time == fecha

Si son dos cadenas (no fechas) no tienes mayor problema. Ya si quisiera trabajar con fechas tendrías que usar Date y hacer conversiones, pero, no te hace falta a priori.

¿Dónde estás aprendiendo Ruby? Porque las si declaras una variable en mayúsculas es una constante y en minúsculas una variable normal. Eso es muy muy básico y ya deberías de saberlo.
  #5 (permalink)  
Antiguo 14/05/2014, 16:55
 
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 10 años
Puntos: 0
Pregunta Respuesta: Libreria roo ruby

Estoy aprendiendo solo, y ya lo he probado asi como me haces tu observacion y no muestra nada, solo se pausa un momento y termina el proceso, como si se saltara al mostrar los datos, apenas llevo un par de semanas agarrando este lenguaje, gracias x sus respuestas
  #6 (permalink)  
Antiguo 14/05/2014, 17:04
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Libreria roo ruby

Bueno, como digo el dato que pones a mano debe de tener el mismo formato que el que sacas del archivo. Intenta imprimir ambas variables a ver si efectivamente están iguales:

Código Ruby:
Ver original
  1. puts time
  2. puts fecha
  #7 (permalink)  
Antiguo 14/05/2014, 18:01
 
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 10 años
Puntos: 0
Exclamación Respuesta: Libreria roo ruby

me marca el siguiente error.

: indefined local variable or method ''fecha' for main: Objetc <NameError>
from archivo.rb:#: in 'foreach'

la variable 'time ' si me la imprime en la pantalla.(esta e sla que inserto al principio)

Etiquetas: libreria, ruby
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:47.