prace ADO.NET ??   zodpovězená otázka

VB.NET, SQL, ADO.NET, Algoritmy, Databáze

zdravim priznivce programovani !

mam jeden takovej problem, ktery zatim nevim jak vyresit. Mam webovou aplikaci, datovy sklad tabulka SQL server. Tabulka vypada zjednodusene nasledovne:

Hlavicka1

Hlavicka2

Hlavicka3

Telo1

Telo2

Telo3

Paticka1

Paticka2

pole v hlavicce a paticce jsou OK, ale pole v "tele" jsou chemicke prvky (napr C,Mn,Mg,Sn atd...) a tyto chemicke prvky jsou v kazdem zaznamu vyplnene pokazde jinak (v jednom zaznamu je vyplnen napr jen C a Mn a v dalsim zaznamu je jen C a Sn).

Ja si vytvorim datatable v datasetu, ktery obsahuje vzdy jen jeden vybrany zaznam z teto tabulky a chci obsah poli tisknout. Ale chtel bych to tisknout tak, aby se vytiskly jen ty prvky, ktere jsou vyplnene.

Nevim jak vlastne vynechat prazdne prvky a pracovat jen s tema co jsou vyplnene. Asi by se mel vytvorit jakoby "novy" zaznam v nove datatable ktery by obsahoval jen vyplnene pole chemickych prvku. Ale jak poznam, ze se jedna prave o pole, ktere reprezentuje chemicky prvek a neni to pole z hlavicky napr. Protoze pole v hlavicce i paticce mohou byt take nevyplnene.

diky za nazory

John

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste to lépe specifikovat, nechápu, čeho chcete dosáhnout. Jak přesně máte uložena data v databázi? Jeden ukázkový příklad by se více než hodil, nedovedu si to představit.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

no,

nacetl jsem si SQL tabulku do datasetu (datatable)

tato tabulka ma strukturu napr:

Nazev: "Jakost"

C: 0,15

Mn: 1,154

Si:

Mg: 4,4

...a obsahuje vzdy jen jeden zaznam

a ted bych potreboval vytvorit dalsi datatable v datasetu, ktera nebude obsahovat uz pole Si, protoze je prazdne. Prazdne pole, ktere se tykaji chemickych prvku bych v nove datatable nechtel mit.

neco zkousim v tomto smyslu ale nejde mi to prilis:

//odkaz na datatable tblTypDratElek v datasetu
DataTable tblTypDratElek = ds.Tables["tblTypDratElek"];

//prochazeni poli a dale nevim...
for (int j = 0; j < tblTypDratElek.Columns.Count; j++)
{
      if (j == 1 && j <= 4) 
      {
           if null(dc.Value...test na hodnotu pole.. ??)
           {
           
           }
      }
            
}

nevim jestli je to srozumitelne....pokud ne mohu poslat cely priklad na mail...

dekuji

Honza

nahlásit spamnahlásit spam 0 odpovědětodpovědět

neco zkousim touto cestou ale zatim se nedari to dotahnout

foreach (DataColumn col in tblTypDratElek.Columns)
{
    //pokud index pole je 5 az 37 - chemicke prvky
    if ((col.Ordinal > 4) && (col.Ordinal < 38))
    {
        //test zda jsou nejaka data v poli
        if (tblTypDratElek.Rows[0][col.Ordinal].ToString() = "") toto nefunguje
        {
            Response.Write(col.ColumnName + "nula <br>");
        }
                    
        Response.Write(col.ColumnName + "<br>");
    }
    else
    {
        Response.Write(col.ColumnName + "chemie ne <br>");                   
    }
}
nahlásit spamnahlásit spam 0 odpovědětodpovědět

no, tak jsem to uspesne dotahl do podoby co jsem chtel. Nejvetsi problem byl prokousat se vlastnosmi a metodami jednotlivych objektu ADO.NET. Pak to slo docela dobre (ale pomalu)...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback