regional settings, Excel ,CSV si OleDbConnection

Nebunul de excel, cind salveaza sub csv, tine seama de regional settings.Iar la mine List separator este ; (ca in Romana) – nu virgula( deci csv nu mai e comma separated values)

Asa se face ca la mine pe masina cind vreau sa citesc cu driver-ul de OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + strDir + “;Extended Properties=’Text;HDR=NO;FMT=Delimited'”) vrea neaparat virgula – si habar nu are ca sunt mai multe coloane…si intra in nebunie…
Dar cum s-ar rezolva nu stiu

2006-12-14 impresii

Munca ca de obicei la servici – citeodata am impresia ca lupt cu morile de vint
Evenimentul zilei :

  • 5,35  Lire pe luna (pentru cei peste 22 ani) este venitul minim. Deci 5.35 * 8 ore * 20zile = 856 Lire = aproximativ 1.274 Euro …Si asta e MINIM!
  • Despre articolul lui Patapievici Dragos Manac o spune mai bine decit mine
  • EMail-ul de Raiffeisen l-am primit si eu – si e primul de phishing pe care il primesc in ROMANA
  • Chinezii incep sa o ia pe urmele Romaniei – fii de demnitari incep sa aiba afaceri de milioane
  • Centru de consiliere premaritala -DUMNEZEULE!

Joel in Software despre Eleganta, imaginea a 2 poduri si o fraza memorabila despre update automat:

Somebody out there is already firing up Gmail to tell me that the JVM
mustn’t just upgrade itself “because that might break something.” Yeah,
if the entire collective wisdom of the Java development team doesn’t
know if it’s going to break something, how am I supposed to know? Sheeesh.

Implement Interface – varianta 1

A trebuit sa fac IDisposable pentru Excel… si sa implementez toate Interfetele respective.
Normal ca a trebuit sa fac un program pentru asta… ca doar nu era sa le fac pe toate de mina-  si a iesit cam asa ceva
Presupun ca poate fi modificat destul de usor ca sa faca acelasi lucru pentru clase abstracte… dar inca nu am pofta si timp sa il termin

Dilema veche si Persoanele cu dizabilitati

Tema respectiva, din pacate, nu m-a pasionat prea mult.

Dar :

  1. Doua articole succinte si la obiect despre alegerile din PSD:Andrei Plesu si Cristian Ghinea
  2. Eurosceptic de Dimbovita – de Sever Voinescu : “Ce anume mergea bine inainte de 95( cerere oficiala de intrare) sau inainte de 2000(inceputul negocierilor) si, odata cu integrarea europeana, se pierde?”
  3. Adrian Mihalache despre proprietatea intelectuala – ar fi meritat scris mai mult si mai la obiect
  4. Luca Niculescu despre Polonia :”Inainte de 2004 ni se spunea ca toti polonezii care voiau sa lucreze in strainatate au plecat deja[…] asta nu a impiedicat insa 5-6000 de polonezi sa paraseasca tara in ultimii 3 ani” si “Inainte de 2004, Polonia avea 2 obiective de politica externa: aderarea la NATO si UE. Indeplinirea obiectivului politic a farimitat fragilul consens politic si a dezvaluit o clasa politica mai putin matura decit parea la inceput”
  5. Florin Poenaru despre Ungaria : “deturnarea(de catre stat) de fonduri europene pentru dezvoltare in salarii bugetare” – Iata ceva ce RO nu a facut inca( si sa speram ca nu va face!)

Catavencu 13-19 decembrie 2006 si IT –

In sfirsit, Dragos a scris fara ( prea) multe aluzii la Windows.
Dar totusi si-a dat in petec un pic:
“In Windows, swap-ul se face intr-un fisier. Desi aplicabil si sub Linux, procedeul este ineficient ca viteza”

Obiectii:
1. In Windows poti sa faci la fel :  O partitie si sa setezi Virtual Memory doar pe partitia respectiva si de dimensiune egala cu partitia ….si ai chiar cazul Linux

2. Daca nu ai 2 hard disk-uri, atunci chiar nu conteaza daca swap-ul este partitie sau fisier – asta pentru ca exista un singur instrument fizic de acces.

Dar ma rog, trebuia sa scrie ceva de rau, nu ?

Pe de alta parte, articolul de RSS e bine facut.

Marguerite Duras in Cotidianul

Am luat ieri Cotidianul cu romanul de Marguerite Duras – si dupa doua pagini am citit din nou cine e autoarea -si mi-am dat seama de greseala : eu vroiam sa citesc de Marguerite Yourcenar…
Ma rog, am citit cartea – si am ramas profund ne-impresionat.Totusi: de ce pling oamenii aia de 1 data la 2-3 pagini ( si de vreo citeva ori pe zi) ?
Cita apa trebuie sa bea ? Si cit de masochisti pot fi?

App_LocalResources si meta:resourcekey

Urasc programatorii fara imaginatie!

Am incercat sa folosesc meta:resourcekey ca sa traduc automat in Engleza si in Romana.
Am creat fisierele nume.aspx.en.resx si nume.aspx.ro.resx, am pus meta:resourcekey , am pus codul de schimbare de limba in Application_BeginRequest si … nimic…

TREBUIE SA FIE SI nume.aspx.resx PENTRU INVARIANT CULTURE … altfel nu merge!
De ce naiba nu au dat un mesaj de atentionare, ceva ?

editarea de obiecte

Va trebui, asa cum am promis, sa facem
adaugarea/ modificarea / stergerea de obiecte( pe scurt, C(R)UD – create,
(read), update, delete). Luam un buton din Toolbox, il tragem pe forma, ii
setam din proprietati ( apasati F4) numele la btnAdd si text la “&Add” (
&A e pentru ca, atunci cind apasam <ALT> + A , sa fie ca si cind dam
click pe button)

 

 

Acum dati dublu click pe button – si veti
intra in codul de click. Avem o problema : trebuie ca user-ul sa introduca
numele Publisher-ului. O sa creeam o noua forma : Click dreapta pe BookWin, Add
=> Windows Form- si ii veti da denumirea de frmPublisherAdd.cs. Apasati F4
si la Text puneti : Add Publisher

 

Adaugati un Label( Name: lblName , Text :
&Name) si un textbox ( Name : txtName)

Adaugam acum un Button de Add ( Name :
btnAdd, Text : &Add) si unul de Exit (Name : btnExit, Text : E&xit)

 

Codul de pe btnExit e cel mai usor ( dati
dublu click pe buton)

  private void
btnExit_Click(object sender, EventArgs e)

        {

            this.Close();//close the form

       
}

Codul de pe Button-ul de Add :

 

            private void
btnAdd_Click(object sender, EventArgs e)

        {

            BookObjects.Publisher
p = new BookObjects.Publisher();

            p.Name = txtName.Text;

            p.Save();

this.Close();//close the form

       
}

 

E
clar ca trebuie sa scriem metoda de Save pe Publisher

Inapoi
la clase : si acolo vom scrie metoda de save.

  public void
Save()

        {

            string
strSQL = ” insert into
Publisher(NamePublisher”
;

            if (!string.IsNullOrEmpty(this.Site))

                strSQL += “,SitePublisher
“
;

 

            strSQL += ”
) Values (“
;

 

            strSQL += “‘”
+ this.Name.Replace(“‘”,“””) + “‘”;//terminator for string in SQL is ‘ – so replace with ”

           

            if (!string.IsNullOrEmpty(this.Site))

                strSQL += “,”
+“‘”+ this.Site.Replace(“‘”, “””)
+“‘”;//terminator
for string in SQL is ‘ – so replace with ”

 

 

            strSQL += ”
)”
;

 

           

            Settings.ExecuteSQL(strSQL);

           

           

           

        }

 

In
sfirsit, sa scriem codul pentru adaugare de pe forma de list:

E
clar ca va trebui sa facem re incarcarea datelor  – deci o sa luam codul de pe
frmPublisherList_Load si o sa il punem in o functie generica , RebindData()

 

private void
btnAdd_Click(object sender, EventArgs e)

        {

            frmPublisherAdd
f = new frmPublisherAdd();

            f.ShowDialog(this);

            RebindData();

       
}

 

private void
RebindData()

        {

BookObjects.ColPublisher publishers = new
BookObjects.ColPublisher();

            publishers.Load();

            colPublisherBindingSource.DataSource =
publishers;

        }

 

Sa
verificam functionarea

Dati
CTRL+ F5 , apasati Add – introduceti un nume – apasati Add – si verificati ca
se vede in lista ceea ce ati introdus.

 

Sa
facem acum stergerea.

Adaugati
alt buton(Name = btnDelete, Text = &Delete) si sa scriem cod pentru delete

private void
btnDelete_Click(object sender, EventArgs e)

        {

 

            BookObjects.Publisher
p = colPublisherBindingSource.Current as
BookObjects.Publisher;

            if (p !=
null)

            {

                //avert
the user

                if (MessageBox.Show(this,
“Delete “ + p.Name, “Delete”, MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.No)

                    return;

 

 

                p.Delete();

                RebindData();

            }

       
}

 

In
sfirsit, sa scriem codul pentru update: iarasi buton, iarasi cod

private void
btnUpdate_Click(object sender, EventArgs e)

        {

            BookObjects.Publisher
p = colPublisherBindingSource.Current as
BookObjects.Publisher;

 

            if (p ==
null)

                return;

 

            frmPublisherUpdate
f = new frmPublisherUpdate(p);

            f.ShowDialog(this);

            RebindData();

       
}

 

Pentru
asta, adaugam o alta forma, in care sa facem update .

Dar
avem neaparata nevoie de un publisher pe care sa facem update.Vom modifica
constructorul formei ca sa accepte ca parametru de intrare un publisher.

 

Ca
sa punem valorile deja obtinute in text box-uri, avem 2 variante :

Fie
codam de mina de doua ori ( ceva de genul  txtName.Text= m_Publisher.Name si ,
pe salvare, m_Publisher.Name= txtName.Text),fie lucram cu DataBindings direct .
Prefer acum, pentru rapiditate, a doua varianta :

 

public partial class frmPublisherUpdate
: Form

    {

        private
BookObjects.Publisher m_Publisher;

        public
frmPublisherUpdate(BookObjects.Publisher pub)

        {

            m_Publisher = pub;

            InitializeComponent();           

        }

 

       

        private void frmPublisherUpdate_Load(object
sender, EventArgs e)

        {

            txtName.DataBindings.Add(“Text”, m_Publisher, “Name”);

            txtSite.DataBindings.Add(“Text”, m_Publisher, “Site”);

        }

 

        private void btnSave_Click(object
sender, EventArgs e)

        {

            m_Publisher.Update();

            this.Close();

        }

 

        private void btnExit_Click(object
sender, EventArgs e)

        {

            this.Close();

        }

 

 

   
}

 

Sa
scriem si codul de salvare pe publisher :

  public void
Update()

        {

            string
strSQL = ” update Publisher set “;

            strSQL += ”
NamePublisher = “
;

 

            strSQL += “‘”
+ this.Name.Replace(“‘”,
“””) + “‘”;

 

            strSQL += “,”;

 

            strSQL += ”
SitePublisher = “
;

 

            strSQL += “‘”
+ this.Site.Replace(“‘”,
“””) + “‘”;

 

 

            strSQL += ”
where IDPublisher = “
+ this.IDPublisher;                           

            strSQL += ”
“
;

 

 

            Settings.ExecuteSQL(strSQL);

       
}

 

 

Ca
tema de acasa, ramine sa faceti acelasi lucru pentru tabela Author.

Data
viitoare o sa facem un mic refactoring de code… si o sa facem un program de
setup pentru aplicatia Windows.

 

           

umbra lui Ender

Terminat Umbra lui Ender,in care il prezinta pe Bean.Cu acelasi stil alert ca Jocul lui Ender(fata de celelalte romane – care au fost scrise parca de altcineva), dar cu ce pret ?Cu pretul de a-l face pe Ender mai slab si mai putin inteligent…UAAAAAAAAAAA!

Dilema veche si Ce vom fi in UE

Din Noica apud Plesu: Tot ce e bun in viata e rau: casnicia buna, cariera, averea, succesul.
(cred ca inteleg din ce punct de vedere…)

Lucian Mindruta despre “Oda neguvernarii”-si despre (auto)importanta oficialitatilor

Andrei Pippidi:”ce ne lipseste intr-un oras ca al nostru?[…] dangatul clopotelor, macar duminica dimineata”. Il rog sa vina in parcul Moghioros, duminica dimineata, si sa auda falsetul preotilor razbatind pina in parc…Groaznic!( si da, probabil ca niste clopote ar fi de preferat- desi nu inteleg de ce ar trebui agresati cei care vor sa se scoale mai tirziu)

Daniel Daianu:”stocul de forta de munca relevanta, raportat la stocul de capital, este considerabil mai mare[…]concluzia se impune de la sine: exista o presiune de scadere a salariilor, daca nu a celor nominale, macar a celor reale.”

Liviu Voinea:”Avem 15% din salariile europene si 60% din preturile europene”