Ruport, reading a csv whose column name have white spaces

hi there,

i am not a expert with ruby at all. this is my first post, i do hope
it’s at right place, please advise otherwise.

i have some dump reporting to do. The input is a csv file. i figured
rupert could be my friend.

i got it up and running with the following

instanciate the csv reading stuff

t = Table(“source.csv”)

remove unnecessary junk

t.remove_column(“Product/Release Xdor”)

now i want to filter and search data like

Student.find(:all, :conditions => { :first_name => “Harvey”, :status =>
1 })

(example taken from
ActiveRecord::Base)

however, the trick is that some of the column names have both the ‘/’
character and white spaces in them.

so it would look like

t.find(:all, :conditions => { :Product/White Darf => “Harvey”,
:Solution/Small Story => 0 })

=> that is giving me syntax errors.

t.find(:all, :conditions => { :‘Product/White Darf’ => “Harvey”,
:‘Solution/Small Story’ => 0 })

=> this is throwing instead

$ ruby ruport.rb Anovo-Biometrics-cases.csv
ruport.rb:86:in find': wrong number of arguments (2 for 1) (ArgumentError) from ruport.rb:86:in run’
from ruport.rb:115

I feel confused. it seriously look like i’ve fallen into some beginners
issue.

anyone has an idea ?

thanks

Hi,

On Thu, Jul 29, 2010 at 8:30 AM, Fourchette Fourchette
[email protected] wrote:

hi there,

i am not a expert with ruby at all. this is my first post, i do hope
it’s at right place, please advise otherwise.

There’s a Ruport mailing list here:
http://groups.google.com/group/ruby-reports

anyone has an idea ?

You’re confusing the Ruport API with ActiveRecord. Based on your
description I’m assuming you’re using Ruport in a stand-alone Ruby
script and not Rails.

Take a look at Ruport::Data::Table::rows_with
(http://api.rubyreports.org/classes/Ruport/Data/Table.html#M000036)

You’ll need to do something like:

t.rows_with(‘Product/White Darf’ => ‘Harvey’, ‘Solution/Small Story’ =>
0)

thanks

Posted via http://www.ruby-forum.com/.

Try the Ruport mailing list if you need more help.
(http://groups.google.com/group/ruby-reports)

–Bob

Thanks bob,

rows_with does the job. great !

however, i have a field (Solution/Hardware) that i want to use in the
_with condition. the trick is that this column often contains a list of
material such as “PC123,PX0990,ER4554,ER554”, and I want the filter to
grab only line with “ER” in the string.

So basically, i am looking for the row_with parameter syntax to use
myfield like “ER
instead of
myfield = “ER”

How can i achieve this ?

thanks

ps: i got my invitation to ruport forum still pending :slight_smile:

rows_with can also take a block, so you can define how you want the
column filtered (in this case I’d probably use a regular expression).
Something like:

t.rows_with(column_name) { |col| col ~= /regex/ }

Take a look at the Ruby API for regular expressions for more info.

wow… can’t wait to test that :slight_smile:

On Tue, Aug 3, 2010 at 4:59 AM, Fourchette Fourchette
[email protected] wrote:

myfield like “ER
instead of
myfield = “ER”

How can i achieve this ?

rows_with can also take a block, so you can define how you want the
column filtered (in this case I’d probably use a regular expression).
Something like:

t.rows_with(column_name) { |col| col ~= /regex/ }

Take a look at the Ruby API for regular expressions for more info.