[ ipiplfox @ 22.09.2011. 21:45 ] @
Pozdrav. Napravio sam malu aplikaciju koja se sastoji iz forme u koju se unose podaci i zapisuju u SQL tablicu. Forma se sastoji iz text boxova:
Ime korisnika:
Broj računa:
Iznos:
Datum:

Uneseni podaci se moraju exportirat pritiskom na botun export/ispis u tekstualni file (file.txt) u slijedečem formatu:

za svakog korisnika (record) se generiraju dva sloga (slog1 i slog2) jedan ispod drugog:

slog1 Mate Matic 1234567-1234567890 1999,99 06122011
slog2 1999,99 06122011
slog1 ..............
slog2 ..............
..
..

također su postavljeni uvjeti od koje do koje pozicije moram bit koji zapis,

SLOG1 format:
slog1 od 0 do 5,
3 prazna mjesta,
Imekorisnika od 8 do 28,
Broj racuna od 28 do 46 i td.. isto vrijedi za slog2 samo su drugi podaci u pitanju. Svaki od slogova završavaju s CRLF

Eto ako neko ima volje za pomoč jer stvarno ne znam odakle počet, primjer koda bi bio ideala.

Pozdrav u unaprijed hvala.
[ unisoft @ 23.09.2011. 01:23 ] @
Napomena: program je napisan na Visual Busic 6 jeziku.

Ovo nije nista tesko za one koji znaju programirati... ako dobro znas programirati ne bi ti trebalo da naucis da radis I/O txt fajlova ne vise od 5-6 meseci na prof nivou ako imas literaturu i znas engleski

1.korak
Potreno je da napravis jednu ODBC vezu sa bazom podataka. Zato sto nemam trenutno instaliran SQL Server na racunaru radio sam sa Access-ovom bazom podataka ali kod je isti za bilo koju bazu samo treba da naravis novu ODBC vezu za taj sistem b.podataka.
ODBC veza se pravi na sledeci nacin: (napomena: koristi sam sa primer bazu Biblio koja se nalazi u instalacionom direktoriju VB6 i tabelu Authors)





2.korak
Laksi deo posla je gotov, ostaje da se dizajnira forma programa. Da bih ti docarao sta se tacno desava koristio sam sledece tri kontrole: adoData, adoGrid i Command Button. Doodeli kontrolama sa forme sledeca imena redom: adoDoc, DBGrid i cmdExport (ovo je potrebno da bi ti radio kod kada ga prekopiras u svoj primer). Kada dodas kontrole na formu to bi trebalo ovako da izgleda.



3.korak
Je povezivanje adoData kontrole sa izvorom podataka. Kada je povezes sa izvorm podataka sledeci je korak da povezes adoGrid kontrolu sa adoData kontrolm


[slika8888888]

4.korak
Pokrecemo program da vidmo kako izgelda forma



5.korak
Unosenje koda iza dugmeta cmdExport za event Click.
Code:

Option Explicit

Private Sub cmdExport_Click()
    '
    Dim adoRS As ADODB.Recordset
    Dim intNumber As Integer, intRecord As Integer
    Dim strTemp1 As String, strTemp2 As String
    Dim intTemp As Integer
    '
    intNumber = FreeFile
    intRecord = 0
    strTemp1 = ""
    strTemp2 = ""
    intTemp = 0
    Set adoRS = New ADODB.Recordset
    Set adoRS = adoDoc.Recordset
    adoRS.MoveFirst
    '
    Open "C:\test.txt" For Output As #intNumber
    '
    While Not adoRS.EOF
        intRecord = intRecord + 1
        strTemp1 = adoRS.Fields("Au_ID").Value
        intTemp = Len(strTemp1)
        If intTemp < 28 Then
            strTemp1 = strTemp1 & Space(28 - Len(strTemp1))
            intTemp = 0
        End If
        strTemp2 = adoRS.Fields("Author").Value
        If intTemp < 29 Then
            strTemp2 = strTemp2 & Space(29 - Len(strTemp2))
            intTemp = 0
        End If
        Print #intNumber, "slog" & strTemp1 & strTemp2 & " [" & adoRS.Fields("Year Born").Value & "]"
        strTemp1 = ""
        strTemp2 = ""
        adoRS.MoveNext
    Wend
    '
    Close #intNumber
    '
End Sub


6.korak
Pokrecemo ponovo program i kliknemo na button Export. Efekti koda su prikazani



To ti je to, ukratko. Ako zelis nesto vise lepo zagrej stolicu i citaj, citaj samo citaj. Do pre 1 godine nista nisam znao sto se tice sa radom I/O txt fajlova ali posle napornog radi i dosta odricanja uspev je vise nego vidljiv...

Ne ocekuj neku vecu pomoc od ove... video si, dobio si, a sada knjigu u sake :))). Pozdav i puno srece u buducem radu.

[Ovu poruku je menjao unisoft dana 23.09.2011. u 11:25 GMT+1]
[ unisoft @ 23.09.2011. 10:36 ] @
Napravio sam samo jednu malu greskicu:

Code:

Print #intNumber, "slog" & strTemp1 & strTemp2 & " [" & adoRS.Fields("Year Born").Value & "]"


zaboravio sam da na slog dodam promenljivu intRecord koja broji zapise.

Code:

Print #intNumber, "slog" & intRecord & "   " & strTemp1 & strTemp2 & " [" & adoRS.Fields("Year Born").Value & "]"


Posle intRecord treba napraviti razmak sirine 3 space-a kao sto si naveo u postu. Zapisi ce se stampati u text faj: slog1 Au_ID Author YearBorn, slog2 Au_ID Author YearBorn...
[ ipiplfox @ 23.09.2011. 10:45 ] @
Unisoft havla na uputama upravo tučem po literaturi i pokušavam složit kod. Zapravo si si puno pomoga jer sad znam odakle krenut kad zapnem javim.
[ unisoft @ 23.09.2011. 13:24 ] @
Rad sa text fajlovima nije uopste tezak. Sve komande mozes da naucis za pola dana ali treba da prodje vreme da bi se neke komande u trenutnku mogao da se setis, naravno bez prelistavanja literature.

Kod treba jos da se dotera, da se proveri postoje li uopste zapisa u bazi podataka, da li je postavljena BOF ili EOF zastavica, da li vec postoji dati txt fajl, ako postoji treba li napraviti novi sa novim zapisima ili u postojeci na kraju dodati, napraviti zaglavlja u txt fajlu... jos mnogo toga. Ovo sto sam ti uradio je samo kostur za tvoj problem.

Nema na cemu i drugi put :D.
[ ipiplfox @ 25.09.2011. 13:15 ] @
Može mala pomoč da se izkobeljam s početka. Nikao da pokrenem ovaj template što si objasnio, maime puca mi grešeke na više mjesta:

Code:

Public Class Form1



    Private Sub EmployeeBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmployeeBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.adoDoc.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.datasetname)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'AdoData.Employee' table. You can move, or remove it, as needed.
        Me.EmployeeTableAdapter.Fill(Me.datasetname.Employee)

    End Sub

    Private Sub EmployeeBindingNavigator_RefreshItems(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles adoData.RefreshItems

    End Sub

    Private Sub cmdExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExport.Click
        '
        Dim adoRS As ADODB.Recordset
        Dim intNumber As Integer, intRecord As Integer
        Dim strTemp1 As String, strTemp2 As String
        Dim intTemp As Integer
        '
        intNumber = FreeFile()
        intRecord = 0
        strTemp1 = ""
        strTemp2 = ""
        intTemp = 0
        adoRS = New ADODB.Recordset
        adoRS = adoDoc.Recordset   -------------- ERROR
        adoRS.MoveFirst()
        '
    Open "C:\test.txt" For Output As #intNumber    ------------ERROR
        '
        While Not adoRS.EOF
            intRecord = intRecord + 1
            strTemp1 = adoRS.Fields("Au_ID").Value
            intTemp = Len(strTemp1)
            If intTemp < 28 Then
                strTemp1 = strTemp1 & Space(28 - Len(strTemp1))
                intTemp = 0
            End If
            strTemp2 = adoRS.Fields("Author").Value
            If intTemp < 29 Then
                strTemp2 = strTemp2 & Space(29 - Len(strTemp2))
                intTemp = 0
            End If
        Print #intNumber, "slog" & strTemp1 & strTemp2 & " [" & adoRS.Fields("Year Born").Value & "]"
            strTemp1 = ""
            strTemp2 = ""
            adoRS.MoveNext()
        End While
        '
    Close #intNumber
        '
    End Sub
End Class



Da li je problem što koristim visual studio 2010, ili ako nije problem da mi pošalješ tvoj project u cijelosti.

[Ovu poruku je menjao ipiplfox dana 25.09.2011. u 14:45 GMT+1]
[ unisoft @ 25.09.2011. 18:22 ] @
Citat:
Da li je problem što koristim visual studio 2010, ili ako nije problem da mi pošalješ tvoj project u cijelosti.

Naravno da je to problem. Sta u stvari tebi treba i u kom jeziku radis?

Code:
adoRS = adoDoc.Recordset   -------------- ERROR

Nemas referencu na ADO Object Library u programu.

Ovo je podforum za VB6,a ne za .NET okruzenje!!! Projekat nemam sacuvan.
[ ipiplfox @ 25.09.2011. 19:18 ] @
Radim u visual studiu 2010 jezik visual basic u .net framework 4 okruženju. Sry što nisam detaljno specificirao na početku.
Znaći li to da sam na skroz krivom putu do riješenja?