Keresés

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

  • For i = 1 To 20

    strSQL = "INSERT INTO valuta (b)"
    strSQL = strSQL & "VALUES (" & Cells(20, a).Text & ")"
    Next i

    Valahogy így?

    A második sorra Application defined or Object Defined error-t nyom!

    Már rájöttem mit rontottam el nem tudom miért a-t írtam oszlop indexnek :)

    Most így néz ki eddig, működni működik csak az a baj hogy csak az utolsó számot írja bele de azt 20x!
    Tehát beleraktam a program végét is (az exportálást) a for ciklusba, így beírja 20x de csak az utolsó számot! Nekem meg pl az A oszlop 20. eleméig mindet bele kellene íratni.

    For i = 1 To 20

    strSQL = "INSERT INTO valuta (b)"
    strSQL = strSQL & "VALUES (" & Cells(20, 1).Text & ")"

    Debug.Print strSQL

    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords

    Debug.Print "Records affected: " & lngRecsAff
    Next i

    Mit rontok el szerinted?

  • strSQL = "INSERT INTO valuta (a,b,c)" - itt adod meg, hogy mely sql mezőkbe akarsz értéket beszúrni.
    strSQL = strSQL & "VALUES (" cells(sor,oszlop).text ")" - kell két and jel természetesen, csak a billentyűzetem szar.

    Az egészet pedig egy for vagy while ciklussal annyirszor futtatod ahány sorod van.

    For i = 1 To 20

    strSQL = "INSERT INTO valuta (b)"
    strSQL = strSQL & "VALUES (" & Cells(20, a).Text & ")"
    Next i

    Valahogy így?

    A második sorra Application defined or Object Defined error-t nyom!

  • Sziasztok!

    Egy olyan kérdésem lenne, hogy hogyan tudnék excel-ből sql adatbázsiba exportálni oszlopokat?

    Van egy próbálkozásom de nem tudom hogy hogy tudnám megadni az oszlopokat mert mindenre hibát dob!

    Dim strSQL As String
    Dim strXLSource As String
    Dim lngRecsAff As Long


    strConn = strConn & "Provider=SQLOLEDB;Data Source=;"
    strConn = strConn & "Initial Catolog=;Trusted_Connection=YES"
    Set cn = New ADODB.connection
    cn.Open "DRIVER={MySQL ODBC 5.1 Driver}" _
    & ";SERVER=localhost" _
    & ";DATABASE=test" _
    & ";UID=root" _
    & ";PWD=root" _
    & ";OPTION=16427"
    strXLSource = "c:\david\test\Munkafüzet1.xlsm;Extended Properties=Excel 12.0"


    '
    'Import by using OPENDATASOURCE.
    '
    'INSERT INTO
    '(SQL Fields)
    '
    'SELECT
    '
    'FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=$]

    strSQL = "INSERT INTO valuta (a)"
    strSQL = strSQL & "VALUES "
    'strSQL = " INSERT INTO valuta VALUES "
    'SELECT a, b, c FROM valuta"
    'strSQL = strSQL & " ([a]) "
    'strSQL = strSQL & " SELECT [a] "
    'strSQL = strSQL & " FROM "
    'strSQL = strSQL & " OPENDATASOURCE('valuta', 'Data Source=" & strXLSource & "')...[tbla$] "

    Debug.Print strSQL

    cn.Execute strSQL, lngRecsAff, adExecuteNoRecords

    Debug.Print "Records affected: " & lngRecsAff

    End Sub

    Valójában ezt az strSQL-es részt nem igazán értem hogy hogyan adhatnám meg!
    Egy értéket meg tudok adni sql szintaxissal de nekem egész oszlop adatait kellene exportálni!

  • Hogyan tudnám ezt a kódot úgy módosítani, hogy ne egy megadott intervallumot írjon ki pl A9:D9-ig hanem mondjuk A9:D9-től lefele az összes sort (balról jobbra) addig amíg van olyan cella amiben adat van?
    Mert ha csak egy nagyobb számot írok a D-nek akkor egy csomó ;-t rak a fájlba, ami meg viszont kell, mert így kell kinéznie a fájban az adatoknak, mindnek külön sorba.
    szerző1;cím1;kiadáséve1;kategória1;
    szerző2;cím2;kiadáséve2;kategória2;
    ....

    Szóval amit beolvas a cellákból azok is ugyan ebben a sorrendben vannak, csak az nem megy hogy ne csak egy sort olvasson be, hanem annyi sort amennyiben adat van!

    Private Sub CommandButton3_Click()

    Dim ce As Range
    Open "D:\export_from_xls.txt" For Append As #1
    fileba = ""
    For Each ce In Range("A9:D9")
    fileba = fileba & ce.Value & ";"
    Next ce
    Print #1, fileba
    Close #1

    End Sub

  • Az előbbi feleadatot befejeztem, amely egy windows form-on végzendő feladat volt.

    Most egy exlcel worksheet-en végzett feladathoz kellene segítség. Ilyen macro-s dolgokat még nem tanultam soha, de ez a kiadott feladat.

    Szóval a problémám egyszerű, mégsem találok rá megoldást.
    Van az excel táblázaton egy combobox, amelynek értéket kell adni. Ezt meg is tudom tenni, de csak úgy működik az én verzióm, ha a visual basic editorból lefuttatom. De így a felhasználó meg nem fogja látni a három variációt, csak ha elindítaná a programot.
    Próbáltam a general részbe berakni, de úgy meg akárhányszor futtatom a programot mindig hozzáadja a három kategóriát a kategória combobox-hoz így nem három lesz belőlük hanem annyiszor három ahányszor futtatom a programot!

    Szóval itt a kód. (így nem látja a user megnyitáskor a három kategóriát, csak ha F5el lefuttatja visual basicből)
    Private Sub Worksheet_Activate()
    With ActiveSheet.ComboBox1
    .Clear
    .AddItem ("Regény")
    .AddItem ("Verseskötet")
    .AddItem ("Folyóirat")

    End With
    End Sub

    Hogyan tudnám a combobox-nak értékül adni ezt a három kategóriát úgy, hogy az már a dokumentum megnyitásakor benne legyen. Ha lehet kerülném a cellákból betöltött adatkénti megadást. De ha nincs más...

    Már tárgytalan!

  • Az előbbi feleadatot befejeztem, amely egy windows form-on végzendő feladat volt.

    Most egy exlcel worksheet-en végzett feladathoz kellene segítség. Ilyen macro-s dolgokat még nem tanultam soha, de ez a kiadott feladat.

    Szóval a problémám egyszerű, mégsem találok rá megoldást.
    Van az excel táblázaton egy combobox, amelynek értéket kell adni. Ezt meg is tudom tenni, de csak úgy működik az én verzióm, ha a visual basic editorból lefuttatom. De így a felhasználó meg nem fogja látni a három variációt, csak ha elindítaná a programot.
    Próbáltam a general részbe berakni, de úgy meg akárhányszor futtatom a programot mindig hozzáadja a három kategóriát a kategória combobox-hoz így nem három lesz belőlük hanem annyiszor három ahányszor futtatom a programot!

    Szóval itt a kód. (így nem látja a user megnyitáskor a három kategóriát, csak ha F5el lefuttatja visual basicből)
    Private Sub Worksheet_Activate()
    With ActiveSheet.ComboBox1
    .Clear
    .AddItem ("Regény")
    .AddItem ("Verseskötet")
    .AddItem ("Folyóirat")

    End With
    End Sub

    Hogyan tudnám a combobox-nak értékül adni ezt a három kategóriát úgy, hogy az már a dokumentum megnyitásakor benne legyen. Ha lehet kerülném a cellákból betöltött adatkénti megadást. De ha nincs más...

  • fileba = ""
    For i = 0 To lista.ListCount - 1
    lista.Selected(i) = True
    fileba = fileba & lista.List(lista.ListIndex) & ";"
    Next
    Print #1, fileba

    Annyiból nem tökéletes, hogy a legutolsó ;-t le kell majd hagynod a végéről. De valamit te is csinálj :DDD

    Nagyon köszönöm ez pont úgy működik ahogy kell!
    Ráadásul ha egymás után veszek fel két rekordot akkor szépen külön sorba is rakja!
    Úgyhogy nagyon eltaláltad a működését!
    Nem kell levágnom a végéről se semmit mert ez így van jól!

    Annyit kérdeznék még, hogy a működését jól értelmezem-e?

    készítünk egy fileba nevű változót ami üres lesz
    Lesz egy for ciklus az első elemtől az utolsó lista elemig.
    majd itt ez a rész nem teljesen tiszta, hogy a fileba nevű változóna értékül adjuk önmagát, és ahhoz hozzáfűzzük a lista i-edik elemét + ;

    De ettől miért marad egysorban? :)

  • Sziasztok!
    Remélem jó helyre írok, Excel-es visual basic-ből kérnék egy apró segítséget.

    Egy nagyobb feladat részfeladata lenne, hogy egy listbox-ba bevitt tartalmat (gomb nyomásra bevitt tartalmat) egy export gomb nyomására egy txt fájlba kell exportálni.
    Ez meg is lenne, de megvan adva hogy milyen formátumba kell exportálni, az én megoldásommal pedig ugyan úgy exportálja ahogy a listában van!

    Szóval itt az én kódom:

    Private Sub CommandButton_export_Click()

    Dim i As Long
    Open "D:\export.txt" For Output As #1
    For i = 0 To lista.ListCount - 1
    lista.Selected(i) = True
    Print #1, lista.List(lista.ListIndex)
    Next
    Close #1
    End Sub

    Ez így exportálja nekem a listát fájlba: (az adatokat csak találomra írtam)

    Márai
    Füveskönyv
    1980
    Verseskötet
    ----------

    De ilyen módon kellene beírnia a fájlba:
    szerző1;cím1;1999;Regény

    Hogyan tudnám a jelenlegi kódomat módosítani ahhoz hogy formázott legyen? Vagy teljesen más kódot kellene használni hozzá?
    Régen tanultam már a visual basic-et...

    Előre is köszönöm a válaszokat!

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