Keresés

Új hozzászólás Aktív témák

  • martonx
    veterán

    hát egy rekord fájlban tároljuk az adatokat (mini adatbázis) és ezeket exportáljuk egy csv fájlba, hogy azt excellel is tudjuk kezelni. és azt kellene megoldani, hogy ha az így kiimportált .csv-t megnyitjuk excellel, és hozzáírunk még néhány rekordot (ami 3 mezőből áll) akkor azokat be tudjuk importálni a programfelületen keresztül a rekord típusú fájlunkba. szerintem is hülyeség, mivel a programmal simán hozzá tudjuk adni. nade ezen a hülye tárgyon múlik, hogy mehessek államvizsgázni, muszáj összekapnom magam. ha gondolod el tudom küldeni az eddigi programot..:)

    Ugye VB.NET-ről beszélünk? Mert ha igen, akkor elküldheted a kódod. Megoldás szempontjából végülis mindegy, hogy .Net vagy nem.

    Ha már megvan a mini adatbázisod, és a csv-d, akkor olvasd be csvből az adatokat, majd azokon végiglépdelve, amit nem találsz meg az adatbázisodban, azt beletöltöd.

    Amúgy, ahhoz nem kell csv-hogy excellel kezeld az adatokat, sima COM objektumon keresztül tudsz kommunikálni az excellel. Ezt sokkal elegánsabbnak tartanám.

    Vagy csinálsz egy excel makrót, ami szintén beleír az adatbázisodba :)

    BME-n már ilyen szakdolgozatokért is adnak diplomát? :F

  • martonx
    veterán

    sziasztok!

    simét VB kérdéssel fordulnék hozzátok. már van egy jó kis programunk, ami képes feltölteni egy rekord típusú fájlt, 3 féle adat tartozik egy rekordhoz. ezt a fájlt ki is tudjuk iratni egy exceláltal is kezet .csv formátumú soros fájlba. az lenne a kérdésem, hogy az hogyan oldható meg, hogy ha én ebbe a soros .csv fájlba beírok még adatokat, azt a program be tudja olvasni, és el tudja tárolni a már említett rekord típusú fájlba, vagyis elvégezni a műveletet visszafelé.

    remélem érthető a kérdés :)

    köszi előre is a segítséget!

    Én már azon fennakadtam, hogy minek egy rekord fájl és egy csv fájl külön-külön? Miért nem a csv fájl a rekord fájl is egyben :F

  • ArchElf
    addikt

    szóval a fájlkezelést tanultuk és a feladat a következő lenne:
    egy ksi adatbázist kellene létrehozni egy rekord típusú fájlban. a fáljlban egy személyről 3 adatot kellene tárolni. ezen adatok eltárolásához létrehoztunk egy elrendezést. 3 textboxban a kívánt adatok vannak, a 4.ben kellene megjelennie annak, hogy hányadik rekordról van szó. a textboxok egyben szolgálnak az adatok bevitelére és egjelenítésére is.
    van 4 command button. egy előre és egy hátra funkciójú, ami a rekordok közötti navigációra szolgál. egy mentés nevű, ami a 3 textbox tartalmát beírja egy rekordba a fájlban, és egy töröl, ami az épp kiválasztott rekordot törli ki.
    remélem érthető...
    a kódból jelenleg ennyi van meg:

    Option Explicit
    Option Base 1
    Private Type hallgato
    nev As String * 30
    neptun As String * 6
    kp As Single
    End Type
    Dim h As hallgato
    Dim f As Integer
    Dim r As Integer
    Dim fnev As String
    Dim tmpfile As String

    Private Function darab() As Integer
    f = FreeFile
    Open fnev For Random Access Read As #f Len = Len(h)
    darab = LOF(f) / Len(h)
    Close #f

    End Function
    Public Sub kiirat(rekordsz As Integer)
    Dim db As Integer
    db = darab
    If db = 0 Then
    Label4.Caption = "No data"
    Call tiszta
    Else
    Label4.Caption = Str(rekordsz) + "/" + Str(db)
    f = FreeFile
    Open fnev For Random Access Read As #f Len = Len(h)
    Get #f, rekordsz, h
    textbox1.Text = h.nev
    textbox2.Text = h.neptun
    textbox3.Text = Str(h.kp)
    End If

    End Sub
    Public Sub tiszta()
    Text1.Text = "Maximum 30 karakter"
    Text2.Text = "NEPTUN"
    Text3.Text = "Kp"

    End Sub

    remélem tud valaki segíteni :R

    Ez működőképesnek tűnik.
    Load-ban be kell állítani a fájlnevet (ha nem textboxból kell beolvasni), Megnyitni a fált írás/olvasásra, le kell kérdni a rekordok számát, be kell állítani az első rekordot (nem kell beszárni a fájl).
    Bottonokban:
    - navigálás: gondolom neked is egyszerű (index változót kell növelni csökkenteni a 0 és a darabszám-1 között - vagy 1 és darabszám között??? már nem emlékszem)
    - editre: ugyanaz van, mint a GET (csak PUT-tal): beállítani a rekordszámot, a textboxokból legenerálni a típust, felülírni vele a rekordot az adott helyen.
    - mentésre: bezárni a fájlt és újranyitni
    - törlésre:
    legegyszerűbb az utolsó elemet a fájl végéről bemásolni a törölt helyére és a rekordhosszal csökkenteni a fájl hosszát.
    bonyolultabban minden rekordot a törölt rekod után eggyel előrébb írni, majd csökkenteni a fájl hosszát egy rekordhosszal.

    Nincs sajna VB6-om, csak magyarázni tudok...

    AE

  • bandus
    veterán

    én is tudom jól, hogy semmit, de sajna ez van. gépészkaron ennyi jut... bár jövő évtől nem lesz már vb6, csak c, de nekem ebben a félévben kell a diploma :)

    mod: mindjárt leírom a feladatot.

    szóval a fájlkezelést tanultuk és a feladat a következő lenne:
    egy ksi adatbázist kellene létrehozni egy rekord típusú fájlban. a fáljlban egy személyről 3 adatot kellene tárolni. ezen adatok eltárolásához létrehoztunk egy elrendezést. 3 textboxban a kívánt adatok vannak, a 4.ben kellene megjelennie annak, hogy hányadik rekordról van szó. a textboxok egyben szolgálnak az adatok bevitelére és egjelenítésére is.
    van 4 command button. egy előre és egy hátra funkciójú, ami a rekordok közötti navigációra szolgál. egy mentés nevű, ami a 3 textbox tartalmát beírja egy rekordba a fájlban, és egy töröl, ami az épp kiválasztott rekordot törli ki.
    remélem érthető...
    a kódból jelenleg ennyi van meg:

    Option Explicit
    Option Base 1
    Private Type hallgato
    nev As String * 30
    neptun As String * 6
    kp As Single
    End Type
    Dim h As hallgato
    Dim f As Integer
    Dim r As Integer
    Dim fnev As String
    Dim tmpfile As String

    Private Function darab() As Integer
    f = FreeFile
    Open fnev For Random Access Read As #f Len = Len(h)
    darab = LOF(f) / Len(h)
    Close #f

    End Function
    Public Sub kiirat(rekordsz As Integer)
    Dim db As Integer
    db = darab
    If db = 0 Then
    Label4.Caption = "No data"
    Call tiszta
    Else
    Label4.Caption = Str(rekordsz) + "/" + Str(db)
    f = FreeFile
    Open fnev For Random Access Read As #f Len = Len(h)
    Get #f, rekordsz, h
    textbox1.Text = h.nev
    textbox2.Text = h.neptun
    textbox3.Text = Str(h.kp)
    End If

    End Sub
    Public Sub tiszta()
    Text1.Text = "Maximum 30 karakter"
    Text2.Text = "NEPTUN"
    Text3.Text = "Kp"

    End Sub

    remélem tud valaki segíteni :R

  • martonx
    veterán

    hopp, szóval van ilyen topik is, észre sem vettem.
    [link]
    nekem ilyen kérdésem lenne, ahogy látom itt is aktuális a téma :)

    put/get úristen ez VB6 lesz.

    És ezt oktatják az iskolában??? Eldobom az agyamat. Szerencsétlen diákok. Komolyan nem értem, akkor már miért nem VBScriptet oktatnak? Az legalább tartós tudást ad, ha más nem, makró programozásnál lehet hasznosítani.

    Na de VB6 tudással mit tudsz kezdeni 2011-ben? :DD

  • opr
    nagyúr

    hopp, szóval van ilyen topik is, észre sem vettem.
    [link]
    nekem ilyen kérdésem lenne, ahogy látom itt is aktuális a téma :)

    Ennél kicsit konkrétabban kéne leírnod a kérdést :)
    Először is, mi a feladat? Másodszor: mi a jelenlegi kódod? Harmadszor: mi a hiba, hol száll el, stb.

Új hozzászólás Aktív témák