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

  • sztanozs
    veterán

    Csináltam egy egszerü stoppert, de 5 perc alatt ~2mp-et késik.
    Egyszerre indítom a telefon stopperével, és 5 perc múlva már 2mp-el kevesebbet mutat, mint a telefon.

    Van valami pontosító trükk, vagy ez ilyen? (Esetleg a telefon stoppere csal ennyit?)

    Mivel/hogyan csináltad a stoppert?

  • cigam
    titán

    Csináltam egy egszerü stoppert, de 5 perc alatt ~2mp-et késik.
    Egyszerre indítom a telefon stopperével, és 5 perc múlva már 2mp-el kevesebbet mutat, mint a telefon.

    Van valami pontosító trükk, vagy ez ilyen? (Esetleg a telefon stoppere csal ennyit?)

  • Onishi
    tag

    A bob_tm a html elem ID-ja. Az alapján meg lehet találni a document.getElementById függvénnyel. Inkább javascripttel próbálkozz (bár VBS-sel is megoldható persze).

    Sajnos csak VBS-t használhatok. Köszi a tippet, próbálkozom.

  • sztanozs
    veterán

    Sziasztok!

    VBScript-el kapcsolatos kérdésem lenne. Leszögezem kezdő vagyok.
    Azt kellene megoldanom, hogy egy bizonyos weblapról információt kinyerni és egy változóban eltárolni.
    Konkréten napi időjárás adatokat kéne szereznem internetről, amit naplózás céljából el kell mentenem.

    Ezt a google keresést kéne megnyitnom, az aktuális hőmérsékletre és a időjárás jellegére vonatkozó szövegre (Esős, Derült stb.) lenne szükségem: [link]

    Nézegettem a forrásfájlját az oldalnak és ezt találtam:

    Egyáltalán nem értek web programozáshoz, de az a "wob_tm" az egy változó? Vajon ez tartalmazza a hőmérsékletet?

    Hogyan kéne erre írni egy scriptet?

    Köszi előre is a segítséget.

    A bob_tm a html elem ID-ja. Az alapján meg lehet találni a document.getElementById függvénnyel. Inkább javascripttel próbálkozz (bár VBS-sel is megoldható persze).

  • Onishi
    tag

    Sziasztok!

    VBScript-el kapcsolatos kérdésem lenne. Leszögezem kezdő vagyok.
    Azt kellene megoldanom, hogy egy bizonyos weblapról információt kinyerni és egy változóban eltárolni.
    Konkréten napi időjárás adatokat kéne szereznem internetről, amit naplózás céljából el kell mentenem.

    Ezt a google keresést kéne megnyitnom, az aktuális hőmérsékletre és a időjárás jellegére vonatkozó szövegre (Esős, Derült stb.) lenne szükségem: [link]

    Nézegettem a forrásfájlját az oldalnak és ezt találtam:

    Egyáltalán nem értek web programozáshoz, de az a "wob_tm" az egy változó? Vajon ez tartalmazza a hőmérsékletet?

    Hogyan kéne erre írni egy scriptet?

    Köszi előre is a segítséget.

  • kymco
    veterán

    Írkáltam korábban egy-két toolt c#-ban, de ha jól tudom az admin toolpack-ben vannak vbs alapú AD manipuláló, meg lekérdező eszközök is. Azokat is érdemes lenne megnézned.

    Köszönöm, azt is meglesem, amint időm lesz rá!

  • sztanozs
    veterán

    Köszönöm, megnézem...
    Egyébként ou rendszergazdája vagyok az ou-mnak, van jogom az ou-mban. :) Nem ez lesz az akadály....

    Írkáltam korábban egy-két toolt c#-ban, de ha jól tudom az admin toolpack-ben vannak vbs alapú AD manipuláló, meg lekérdező eszközök is. Azokat is érdemes lenne megnézned.

  • kymco
    veterán

    Innen lessél: [link]

    Amúgy, ahhoz, hogy az AD userjeit leszedd, azért tudni kell, mit is szeretnél - mert ugye az AD-be redgisztrált számítógépek, technikai userek, stb. is mind user. No meg egy nagyobb AD-ben több 10-100 ezer user is lehet különböző konténerekben, vagy akár AD forestben...

    Ja és ráadásul, ha a 'null session' nincs engedélyezve az adott AD-ban, akkor érvényes felhasználóval is kell rendelkezz az adott tartományra.

    Köszönöm, megnézem...
    Egyébként ou rendszergazdája vagyok az ou-mnak, van jogom az ou-mban. :) Nem ez lesz az akadály....

  • sztanozs
    veterán

    DC - Domain Controller
    A lekérdezés talán már menne is, de én egy tartományon kívüli gépről akarok lekérdezni, ahhoz pedig vsz jogosultságot kellene szereznem az access számára, hogy le tudjon kérdezni. Ehhez a csatlakozáshoz kellene egy kis segítség.

    Innen lessél: [link]

    Amúgy, ahhoz, hogy az AD userjeit leszedd, azért tudni kell, mit is szeretnél - mert ugye az AD-be redgisztrált számítógépek, technikai userek, stb. is mind user. No meg egy nagyobb AD-ben több 10-100 ezer user is lehet különböző konténerekben, vagy akár AD forestben...

    Ja és ráadásul, ha a 'null session' nincs engedélyezve az adott AD-ban, akkor érvényes felhasználóval is kell rendelkezz az adott tartományra.

  • martonx
    veterán

    DC - Domain Controller
    A lekérdezés talán már menne is, de én egy tartományon kívüli gépről akarok lekérdezni, ahhoz pedig vsz jogosultságot kellene szereznem az access számára, hogy le tudjon kérdezni. Ehhez a csatlakozáshoz kellene egy kis segítség.

    Én mindig csak tartományon belül használtam az AD lekérdezést. Ebben nem tudok segíteni :(

  • kymco
    veterán

    Mi az a DC?
    Az AD-t szerencsére bármilyen nyelvből (értsd VBA-ból is), SQL szerűen le lehet kérdezni, régen mennyi ilyet csináltam, és hál istennek milyen régen volt már az. Gugli a barátod kismillió példát fogsz rá találni.

    DC - Domain Controller
    A lekérdezés talán már menne is, de én egy tartományon kívüli gépről akarok lekérdezni, ahhoz pedig vsz jogosultságot kellene szereznem az access számára, hogy le tudjon kérdezni. Ehhez a csatlakozáshoz kellene egy kis segítség.

  • martonx
    veterán

    Sziasztok!
    Az lenne a feladatom, hogy access-ben rá tudjak jelentkezni egy DC-re, majd onnan le tudjam szedni az AD usre-jeit.

    Segítséget szeretnék kérni, hogy hogyan tudok access-ből VBA segítségével rácsatlakozni az adott DC-re a szükséges login és jelszó ismeretében.
    Segítségeteket előre is köszönöm!

    Mi az a DC?
    Az AD-t szerencsére bármilyen nyelvből (értsd VBA-ból is), SQL szerűen le lehet kérdezni, régen mennyi ilyet csináltam, és hál istennek milyen régen volt már az. Gugli a barátod kismillió példát fogsz rá találni.

  • kymco
    veterán

    Sziasztok!
    Az lenne a feladatom, hogy access-ben rá tudjak jelentkezni egy DC-re, majd onnan le tudjam szedni az AD usre-jeit.

    Segítséget szeretnék kérni, hogy hogyan tudok access-ből VBA segítségével rácsatlakozni az adott DC-re a szükséges login és jelszó ismeretében.
    Segítségeteket előre is köszönöm!

  • Vasinger!
    nagyúr

    Kicsit talán nehezen követhető :N

    for valami=kistábla_első_oszlop_első_cella to kistábla_első_oszlop_utolsó_cella
    on error goto beszúrás
    sor=application.match(cells(valami,kistábla_első_oszlop), columns(nagytábla_első_oszlopa),0)
    cells(soradik,nagytábla_második_oszlop)=cells(valami, kistábla_második_oszlop)
    cells(soradik,nagytábla_harmadik_oszlop)=cells(valami, kistábla_harmadik_oszlop)
    next
    exit sub

    beszúrás:
    nagytábla_első_oszlop_első_üres_cellája=cells(valami, kistábla_első_oszlop)
    nagytábla_második_oszlop_első_üres_cellája=cells(valami, kistábla_második_oszlop)
    nagytábla_harmadik_oszlop_első_üres_cellája=cells(valami, kistábla_harmadik_oszlop)

    Köszönöm szépen, még a mai nap kipróbálom, ha nem sikerülne írok még! :R

  • Delila_1
    veterán

    Sziasztok!

    Egy olyan VB scriptet kéne írnom Excelben ami a következőt csinálja:

    Van Nagy Tábla, régi értékekkel és van sok kicsi frissekkel. A kicsikből kéne felölteni a nagy táblának az értékeit, a következőképpen:

    A kis táblán végig kell iterálni sorban és az adott sornak egy megadott oszlopát kéne a másik táblázat megfelelő oszlopába átmásolni. (Nyilván a nagy táblában is meg kell keresni az adott bejegyzést és a megfelelőhöz kéne bemásolni az adott oszlopba)

    Egy példán szemléltetve:

    Kis tábla:

    A B C
    Ferrari|1997|5.0|
    Porsche|1998|7.0|

    Nagy tábla:

    A B C
    Audi |1993|4.0|
    Ferrari|1997|2.0|
    Porsche|1998|3.0|
    Opel |1999|1.4|

    Nagy tábla másolás után:

    A B C
    Audi |1993|4.0|
    Ferrari|1997|5.0|
    Porsche|1998|7.0|
    Opel |1999|1.4|

    Természetesen a táblákban nincs minden sorban és nem ugyanaz teljesen a felépítésük.

    Tehát a kis táblában a kimásolandó adatra kéne először rákeresni a nagy táblában, majd utána a kis táblából egy cellát kimásolni és a korábban megkeresett helyre a nagy táblába bemásolni az értéket.

    Próbálkoztam már vele, de valahol mindig elakadok, lehet teljesen rossz az elképzelésem is, elég lenne ha valaki csak vázlatosan leírná a megoldás menetét.

    Ha valaki tudna segíteni ebben azt nagyon megköszönném, akár jöhet priviben is! :R

    Kicsit talán nehezen követhető :N

    for valami=kistábla_első_oszlop_első_cella to kistábla_első_oszlop_utolsó_cella
    on error goto beszúrás
    sor=application.match(cells(valami,kistábla_első_oszlop), columns(nagytábla_első_oszlopa),0)
    cells(soradik,nagytábla_második_oszlop)=cells(valami, kistábla_második_oszlop)
    cells(soradik,nagytábla_harmadik_oszlop)=cells(valami, kistábla_harmadik_oszlop)
    next
    exit sub

    beszúrás:
    nagytábla_első_oszlop_első_üres_cellája=cells(valami, kistábla_első_oszlop)
    nagytábla_második_oszlop_első_üres_cellája=cells(valami, kistábla_második_oszlop)
    nagytábla_harmadik_oszlop_első_üres_cellája=cells(valami, kistábla_harmadik_oszlop)

  • Vasinger!
    nagyúr

    Sziasztok!

    Egy olyan VB scriptet kéne írnom Excelben ami a következőt csinálja:

    Van Nagy Tábla, régi értékekkel és van sok kicsi frissekkel. A kicsikből kéne felölteni a nagy táblának az értékeit, a következőképpen:

    A kis táblán végig kell iterálni sorban és az adott sornak egy megadott oszlopát kéne a másik táblázat megfelelő oszlopába átmásolni. (Nyilván a nagy táblában is meg kell keresni az adott bejegyzést és a megfelelőhöz kéne bemásolni az adott oszlopba)

    Egy példán szemléltetve:

    Kis tábla:

    A B C
    Ferrari|1997|5.0|
    Porsche|1998|7.0|

    Nagy tábla:

    A B C
    Audi |1993|4.0|
    Ferrari|1997|2.0|
    Porsche|1998|3.0|
    Opel |1999|1.4|

    Nagy tábla másolás után:

    A B C
    Audi |1993|4.0|
    Ferrari|1997|5.0|
    Porsche|1998|7.0|
    Opel |1999|1.4|

    Természetesen a táblákban nincs minden sorban és nem ugyanaz teljesen a felépítésük.

    Tehát a kis táblában a kimásolandó adatra kéne először rákeresni a nagy táblában, majd utána a kis táblából egy cellát kimásolni és a korábban megkeresett helyre a nagy táblába bemásolni az értéket.

    Próbálkoztam már vele, de valahol mindig elakadok, lehet teljesen rossz az elképzelésem is, elég lenne ha valaki csak vázlatosan leírná a megoldás menetét.

    Ha valaki tudna segíteni ebben azt nagyon megköszönném, akár jöhet priviben is! :R

  • Bobrooney
    senior tag

    Több lehetőséget is látok, gondolom ezeket lenne érdemes megnézned makró rögzítővel:

    1. Adatok fülön kiválasztod a Remove Duplicates (bocs, nincs magyar excelem) opciót.
    2. Adatok fülön kiválasztod az Advanced filter-t. Ennél meg tudod adni, hogy csak a unique elemeket másolja / jelenítse meg. Bár nálam ez a mini példámban nem igen csinált semmit, de elvileg ennek is mennie kellene.

    Köszi holnap meglesem :R

  • martonx
    veterán

    Skacok hogy lehet elérni egy szűrő legördülő tartalmát vba kóddal?
    Remélem van rá esély, illetve kevés kódolással azt vizsgálni h mik a különböző adatok egy oszlopban, ha nem muszály nem írok rá tömbös keresést.
    Köszönöm előre is!

    Több lehetőséget is látok, gondolom ezeket lenne érdemes megnézned makró rögzítővel:

    1. Adatok fülön kiválasztod a Remove Duplicates (bocs, nincs magyar excelem) opciót.
    2. Adatok fülön kiválasztod az Advanced filter-t. Ennél meg tudod adni, hogy csak a unique elemeket másolja / jelenítse meg. Bár nálam ez a mini példámban nem igen csinált semmit, de elvileg ennek is mennie kellene.

  • Bobrooney
    senior tag

    Skacok hogy lehet elérni egy szűrő legördülő tartalmát vba kóddal?
    Remélem van rá esély, illetve kevés kódolással azt vizsgálni h mik a különböző adatok egy oszlopban, ha nem muszály nem írok rá tömbös keresést.
    Köszönöm előre is!

  • vilag
    tag

    Verziószám eltérés is található a két VB között (az enyém: Version 1053, a másik: 1020)

    Valamint észrevettem, hogy a az Object Browser-ben rákeresek pl. a már említett "ShowAllData" kifejezésre, akkor mindkét gépen van találat, azonban ha a jobb klikk "help"-et akarom elérni akkor az egyik képen két olyan választás jelenik meg, ami a másikon nem.

    Olyan mintha ez a funkció az egyik gépen elérhető lenne, míg a másikon nem.

    Ha kiveszem előle az On Error-t, akkor az említett sornál az alábbi hibaüzenet jelenik meg:

    "Worksheet osztály ShowAllData metódusa hibás"

    Ötlet?

    A probléma úgy tűnik megoldódott.

    Feltettem az office service pack 3-at és azóta jónak tűnik.

    Köszönöm a segítséget!

  • vilag
    tag

    Verziószám eltérés is található a két VB között (az enyém: Version 1053, a másik: 1020)

    Valamint észrevettem, hogy a az Object Browser-ben rákeresek pl. a már említett "ShowAllData" kifejezésre, akkor mindkét gépen van találat, azonban ha a jobb klikk "help"-et akarom elérni akkor az egyik képen két olyan választás jelenik meg, ami a másikon nem.

    Olyan mintha ez a funkció az egyik gépen elérhető lenne, míg a másikon nem.

    Ha kiveszem előle az On Error-t, akkor az említett sornál az alábbi hibaüzenet jelenik meg:

    "Worksheet osztály ShowAllData metódusa hibás"

    Ötlet?

  • vilag
    tag

    Okozhatja a problémát az, hogy telepítésnél nem állították be a "Közös Office eszközök" menüponthoz, hogy "Minden a saját gépről fut"?

    Azt hiszem ebben a csoportban van a Visual Basic for Application is.

    Elképzelhető, hogy nem ment fel a Visual Basic minden része???

  • vilag
    tag

    Regional Settings beállításban (US/UK/HU) vagy az Office telepíítő nyelvében (angol/magyar) van különbség a gépek között?

    Szerintem nincs, mert magyar nyelvű a Win7 és az Office 2007 is.

  • sztanozs
    veterán

    A szűrés dátumra történik, adódhat a probléma esetleg az excel meglehetősen furcsa dátumkezeléséből?

    Megjegyzés: az itthoni gépemen is tökéletesen működik.

    Regional Settings beállításban (US/UK/HU) vagy az Office telepíítő nyelvében (angol/magyar) van különbség a gépek között?

  • vilag
    tag

    A szűrés dátumra történik, adódhat a probléma esetleg az excel meglehetősen furcsa dátumkezeléséből?

    Megjegyzés: az itthoni gépemen is tökéletesen működik.

  • vilag
    tag

    szerintem van a kod elejen egy on error resume next
    szedd ki és írd meg a hibauzenetet

    Van előtte On Error, de pont ez a lényege.

    A kód:
    On Error GoTo vege
    ActiveSheet.ShowAllData
    Range("a" + Trim(ActiveSheet.Range("a14").End(xlDown).Row)).Select
    Exit Sub

    vege:
    If sorbeszur = True Then Exit Sub
    uzenet = MsgBox("Már minden tétel látható!", 64, "Rendszerüzenet")

    End Sub

    A kérdés sokkal inkább az, hogy miért van az, hogy az egyik gépen működik, a másikon pedig nem???
    Elvileg azonos futtatási környezet...

  • sztanozs
    veterán

    Üdv!

    Egy ujabb érdekes esettel kerültem szembe.

    Van egy gép amelyre korábban feltettem egy általam VB-ben írt programot, amely a kezdeti nehézségektől eltekintve tökéletesen futott.
    A gépet elvitték, mert az xp támogatásának megszünése okán Win7-et tettek rá.

    Azóta a programkód azt a furcsaságot csinálja, hogy egyes sorai egyszerűen "nem hajtódnak végre".
    Ez annyit tesz, hogy elér a kód (léptetésben pl.) az adott sorhoz, rá is megy, tovább is lép a következő sorra, azonban a várt művelet nem hajtódik végre.

    Ezen felbuzdulva a programot egy pendrivera tettem és bevittem a céghez (win 7), azonban azon a gépen tökéletesen működik.

    Lépésben végigfuttattam a kódot és több olyan sor is van ami az említett módon nem hajtódik végre.
    (pl.: Activesheet.ShowAllData)
    Megnéztem a referenciákat, abban nincs eltérés.

    Egyszerűen nem értem, hogy mi a fittyfene van.

    Van valakinek ötlete????
    Lehet, hogy az office telepítésnél kihagytak valamit???

    szerintem van a kod elejen egy on error resume next
    szedd ki és írd meg a hibauzenetet

  • vilag
    tag

    Üdv!

    Egy ujabb érdekes esettel kerültem szembe.

    Van egy gép amelyre korábban feltettem egy általam VB-ben írt programot, amely a kezdeti nehézségektől eltekintve tökéletesen futott.
    A gépet elvitték, mert az xp támogatásának megszünése okán Win7-et tettek rá.

    Azóta a programkód azt a furcsaságot csinálja, hogy egyes sorai egyszerűen "nem hajtódnak végre".
    Ez annyit tesz, hogy elér a kód (léptetésben pl.) az adott sorhoz, rá is megy, tovább is lép a következő sorra, azonban a várt művelet nem hajtódik végre.

    Ezen felbuzdulva a programot egy pendrivera tettem és bevittem a céghez (win 7), azonban azon a gépen tökéletesen működik.

    Lépésben végigfuttattam a kódot és több olyan sor is van ami az említett módon nem hajtódik végre.
    (pl.: Activesheet.ShowAllData)
    Megnéztem a referenciákat, abban nincs eltérés.

    Egyszerűen nem értem, hogy mi a fittyfene van.

    Van valakinek ötlete????
    Lehet, hogy az office telepítésnél kihagytak valamit???

  • martonx
    veterán

    Köszönöm a segítséget és a kódokat. Most már lefut a program,de csak egy időre feltűnik a konzol majd utána el is tűnik.Tehát nem látom az eredményt.Valami olyan kellene mint a getchar a c-ben. VB-ben van ilyen?
    A másik egy egyszerű animáció lenne de nem jó az eredmény.
    A kód:
    Imports System.Console
    Module Module1

    Sub Main()
    Dim str As String = "Animáció!"
    For i As Integer = 1 To 60
    CursorLeft = i
    Write("" + str)
    Threading.Thread.Sleep(100)
    Next
    Console.ReadKey()
    End Sub
    End Module

    Lefut csak ilyen eredménnyel.
    A sok A betűt kellene valahogy eltüntetni.

    Te magad is használod :) Console.ReadKey

  • #59892992
    törölt tag

    Egyrészt ha kiavítanád, sem lenne jó (for a = 2 to 10), mivel 1. a kiiratás nem a ciklusban van, 2. ráadásul az értékadás után (for) változtatod a ciklusváltozó értékét.

    Próbáld ki az alábbiakat és rájössz a különbségre:
    1.
    Sub Main()
    Dim a As Integer
    a = 0
    For a = 2 to 10
    a = a + 2
    Next
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    End Sub

    2.
    Sub Main()
    Dim a As Integer
    a = 0
    For a = 2 to 10
    a = a + 2
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    Next
    End Sub

    3.
    Sub Main()
    Dim a As Integer
    a = 0
    For a = 2 to 10
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    a = a + 2
    Next
    End Sub

    4.
    Sub Main()
    Dim a As Integer
    Console.WriteLine("A páros számok 1-től 10-ig:")
    For a = 2 to 10 step 2
    Console.WriteLine(a)
    Next
    End Sub

    Köszönöm a segítséget és a kódokat. Most már lefut a program,de csak egy időre feltűnik a konzol majd utána el is tűnik.Tehát nem látom az eredményt.Valami olyan kellene mint a getchar a c-ben. VB-ben van ilyen?
    A másik egy egyszerű animáció lenne de nem jó az eredmény.
    A kód:
    Imports System.Console
    Module Module1

    Sub Main()
    Dim str As String = "Animáció!"
    For i As Integer = 1 To 60
    CursorLeft = i
    Write("" + str)
    Threading.Thread.Sleep(100)
    Next
    Console.ReadKey()
    End Sub
    End Module

    Lefut csak ilyen eredménnyel.
    A sok A betűt kellene valahogy eltüntetni.

  • sztanozs
    veterán

    Üdv!
    Valaki tud nekem segíteni.Kezdő vagyok VB.net programozásban.
    Íme amit csináltam:
    Module Module1

    Sub Main()
    Dim a As Integer
    a = 0
    For a 2 to 10
    a = a + 2
    Next
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    End Sub

    End Module

    A program nem fut le. Szintaktikai hibát ír ki a For ciklusban. For a 2 to 10-itt a 2-őt húzza alá.

    Egyrészt ha kiavítanád, sem lenne jó (for a = 2 to 10), mivel 1. a kiiratás nem a ciklusban van, 2. ráadásul az értékadás után (for) változtatod a ciklusváltozó értékét.

    Próbáld ki az alábbiakat és rájössz a különbségre:
    1.
    Sub Main()
    Dim a As Integer
    a = 0
    For a = 2 to 10
    a = a + 2
    Next
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    End Sub

    2.
    Sub Main()
    Dim a As Integer
    a = 0
    For a = 2 to 10
    a = a + 2
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    Next
    End Sub

    3.
    Sub Main()
    Dim a As Integer
    a = 0
    For a = 2 to 10
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    a = a + 2
    Next
    End Sub

    4.
    Sub Main()
    Dim a As Integer
    Console.WriteLine("A páros számok 1-től 10-ig:")
    For a = 2 to 10 step 2
    Console.WriteLine(a)
    Next
    End Sub

  • #59892992
    törölt tag

    Üdv!
    Valaki tud nekem segíteni.Kezdő vagyok VB.net programozásban.
    Íme amit csináltam:
    Module Module1

    Sub Main()
    Dim a As Integer
    a = 0
    For a 2 to 10
    a = a + 2
    Next
    Console.WriteLine("A páros számok 1-től 10-ig=" & a)
    End Sub

    End Module

    A program nem fut le. Szintaktikai hibát ír ki a For ciklusban. For a 2 to 10-itt a 2-őt húzza alá.

  • Postas99
    őstag

    Ez csak akkor működik, ha nem ajax kéréssel megy fel a szerverre:
    WebBrowser1.ReadyState <> WebBrowserReadyState.Complete

    Ha ajax (és nincs page redirect - pl login miatt), akkor hasznosabb volna az xmlhttprequest-et használni.

    Amúgy a fenti miért járhatatlan út?

    For x = 1 To többezer
    '... html input kitöltés
    '... html submit
    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    Application.DoEvents()
    End While 'Loop
    Next

    Eddig pont igy írtam meg.
    Csak tippelem, hogy nem működik megfelelően. Mert 1000 lefutást produkálva viszonylag hamar lefut (max 1 perc corei5 8giga ram gigabites háló)

  • sztanozs
    veterán

    Sziasztok!

    Kicsit elakadtam egy projektben.
    A program egyszerű lenne mint a faék, viszont a tippem az, hogy a többszöri utánolvasásra sem úgy működik amint kéne.

    Adva van egy webbrowser box amiben egy adott oldalt nyitnék meg.

    Majd a megnyitott WEB oldalon kellene az adott input boxokba adatokat préselni. a végén SUBMIT.
    Viszont tudnom kéne, hogy a submit után az adott WEB oldal újratöltődött és küldhetem a következő csomagot.

    Eddig ilyet találtam a vizsgálatra, de mivel az egész ciklust szeretném néhány ezerszer lefuttatni ezért ez járhatatlan út.

    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    Application.DoEvents()
    ' MsgBox("busy")
    End While 'Loop

    Valakinek ötlete?
    Akár megshare-elném a programot is, csak működjön szépen, azaz tegye a dolgát.

    Ez csak akkor működik, ha nem ajax kéréssel megy fel a szerverre:
    WebBrowser1.ReadyState <> WebBrowserReadyState.Complete

    Ha ajax (és nincs page redirect - pl login miatt), akkor hasznosabb volna az xmlhttprequest-et használni.

    Amúgy a fenti miért járhatatlan út?

    For x = 1 To többezer
    '... html input kitöltés
    '... html submit
    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    Application.DoEvents()
    End While 'Loop
    Next

  • Postas99
    őstag

    Sziasztok!

    Kicsit elakadtam egy projektben.
    A program egyszerű lenne mint a faék, viszont a tippem az, hogy a többszöri utánolvasásra sem úgy működik amint kéne.

    Adva van egy webbrowser box amiben egy adott oldalt nyitnék meg.

    Majd a megnyitott WEB oldalon kellene az adott input boxokba adatokat préselni. a végén SUBMIT.
    Viszont tudnom kéne, hogy a submit után az adott WEB oldal újratöltődött és küldhetem a következő csomagot.

    Eddig ilyet találtam a vizsgálatra, de mivel az egész ciklust szeretném néhány ezerszer lefuttatni ezért ez járhatatlan út.

    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    Application.DoEvents()
    ' MsgBox("busy")
    End While 'Loop

    Valakinek ötlete?
    Akár megshare-elném a programot is, csak működjön szépen, azaz tegye a dolgát.

  • King Unique
    titán

    Üdvözletem!

    Excel VB programozásban (tudom van más topik, de én itt kérdezném) kéne megoldani az alábbi feladatot és nem igazán boldogulok vele:

    • Legyen a párbeszédablakban egy méret feliratú legördülő lista, amelyben ki lehessen választani egy egész számot 2-10-ig! A legördülő lista tartalmát ciklussal töltsük fel, új adatot ne lehessen megadni benne, kezdőértéke legyen 5!

    • Egy Gererál nyomógomb megnyomására generáljunk egy Méret*Méret méretű adatblokkot az első munkalapra, ahol a Méret a legördülő lista aktuális értékét jelöli. A blokk bal felső cellája sarokcella az A1-es cella legyen, az adatok legyenek véletlen egész számok és essenek bele a [0, 100] intervallumba! A munkalapon lévő előző adatblokkot töröljük!

    • Egy megfelelően paraméterezett szubrutin határozza meg az adatblokk legnagyobb adatát és annak helyét (sor, oszlop)! Ha több ilyen adat is lenne, akkor az első ilyen (legkisebb sor, ill. index) adjuk eredményként!

    • Egy Maximum feliratú nyomógomb megnyomására hívjuk meg az előző szubrutint és emeljük ki a megfelelő elemet (cellát) kék betűszínnel! Az összes többi elem legyen fekete betűszínű!

    • Legyen a párbeszédablakban egy Összes feliratú jelölőnégyzet, ami a kezdetben legyen kikapcsolt állapotú! Bekapcsolt állapotban a Maximum nyomógomb a legnagyobb elemnek ne csak az első, de az összes előfordulását emelje ki!

    :R

  • mariann71
    csendes tag

    Szia,

    Nézd meg ezt a kódot, szerintem azt csinálja, ami neked kell:

    Sub transzponal()

    Dim inp, res As Variant
    Dim r As Range
    Dim n As Integer

    inp = Range(Cells(1, 1), Cells(22, 1)) 'itt olvassa be a program az induló adatokat

    n = Int(UBound(inp) / 5) 'itt nézi meg, hogy hány sor lesz az új tömb
    If UBound(inp) Mod 5 <> 0 Then n = n + 1

    ReDim res(1 To n, 1 To 5)

    For i = 1 To n
    For j = 1 To 5
    If (i - 1) * 5 + j > UBound(inp) Then Exit For
    res(i, j) = inp((i - 1) * 5 + j, 1)
    Next j
    Next i

    Set r = Range(Cells(1, 2), Cells(n, 6)) 'itt lehet megadni hogy hova outputolja az eredményt
    r = res

    End Sub

    Üdv

    T_bee

    Köszönöm, ez szuper lett, pontosan erre volt szükségem. Mégegyszer nagyon köszönöm!!! Mariann71

  • mariann71
    csendes tag

    Tegyél fel légyszi valahova egy ilyen adatokkal teli excel file-t, aztán szívesen segítek. Érzésre itt egy pasetspecial meg a transpose = true nem lesz elég.

    Nagyon köszönöm, de T-bee programja már megoldotta a problémát.
    Köszi mégegyszer, nagyon jó, hogy ilyen sokan vagytok, akik önzetlenül segítenek.

  • T_bee
    aktív tag

    Sziasztok!
    A segítségeteket szeretném kérni. Hogyan tudok egy több ezer soros oszlopból transzponálni 5 sorosáva? példa:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Eredmény:
    12345
    678910
    Nagyon köszönöm ha válaszoltok!

    Szia,

    Nézd meg ezt a kódot, szerintem azt csinálja, ami neked kell:

    Sub transzponal()

    Dim inp, res As Variant
    Dim r As Range
    Dim n As Integer

    inp = Range(Cells(1, 1), Cells(22, 1)) 'itt olvassa be a program az induló adatokat

    n = Int(UBound(inp) / 5) 'itt nézi meg, hogy hány sor lesz az új tömb
    If UBound(inp) Mod 5 <> 0 Then n = n + 1

    ReDim res(1 To n, 1 To 5)

    For i = 1 To n
    For j = 1 To 5
    If (i - 1) * 5 + j > UBound(inp) Then Exit For
    res(i, j) = inp((i - 1) * 5 + j, 1)
    Next j
    Next i

    Set r = Range(Cells(1, 2), Cells(n, 6)) 'itt lehet megadni hogy hova outputolja az eredményt
    r = res

    End Sub

    Üdv

    T_bee

  • martonx
    veterán

    A makrót megírtam, de nem tudom hogyan adjam meg a ciklust. Segítenél?

    Sub Makró1()
    '
    ' Makró1 Makró
    '
    ' Billentyűparancs: Ctrl+t
    '

    Range("A1:A5").Select
    Selection.Copy
    Range("B1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True

    End Sub

    Nagyon köszönöm!

    Tegyél fel légyszi valahova egy ilyen adatokkal teli excel file-t, aztán szívesen segítek. Érzésre itt egy pasetspecial meg a transpose = true nem lesz elég.

  • mariann71
    csendes tag

    A makrót megírtam, de nem tudom hogyan adjam meg a ciklust. Segítenél?

    Sub Makró1()
    '
    ' Makró1 Makró
    '
    ' Billentyűparancs: Ctrl+t
    '

    Range("A1:A5").Select
    Selection.Copy
    Range("B1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True

    End Sub

    Nagyon köszönöm!

  • martonx
    veterán

    Sziasztok!
    A segítségeteket szeretném kérni. Hogyan tudok egy több ezer soros oszlopból transzponálni 5 sorosáva? példa:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Eredmény:
    12345
    678910
    Nagyon köszönöm ha válaszoltok!

    For ciklussal?

  • mariann71
    csendes tag

    Sziasztok!
    A segítségeteket szeretném kérni. Hogyan tudok egy több ezer soros oszlopból transzponálni 5 sorosáva? példa:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Eredmény:
    12345
    678910
    Nagyon köszönöm ha válaszoltok!

  • Baryka007
    addikt

    Üdv!

    WshShell.AppActivate "Calc" evvel a paranccsal lenne egy kis gondom.... A gond az hogy két Calc van nyitva és a kettőt kéne váltania... de mindig csak az elsőnek felnyitott calcot húzza elő a progi nem lehetne megkülönböztetni a két calcot hogy a program a kettő között tudjon váltani ?

    És ne haragudjatok... de a Visual Basicről halvány lila fogalmam sincs... szóval ha nem fárasztalak titeket nagyon le... akkor szájbarágósan magyarázzátok kérlek :DDD

  • új kérdező
    csendes tag

    Üdv mindenkinek!
    Két kérésem, kérdésem lenne. Az első
    fnev9k = fnev + "k"
    fnev9j = fnev + "j"
    fnev9i = fnev + "i"
    fnev9h = fnev + "h"
    fnev9g = fnev + "g"
    fnev9f = fnev + "f"
    fnev9e = fnev + "e"
    fnev9d = fnev + "d"
    fnev9c = fnev + "c"
    fnev9b = fnev + "b"
    fnev9a = fnev + "a"
    If Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9k & ".dxf") <> "" Then
    fnev = fnev9k
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9j & ".dxf") <> "" Then
    fnev = fnev9j
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9i & ".dxf") <> "" Then
    fnev = fnev9i
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9h & ".dxf") <> "" Then
    fnev = fnev9h
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9g & ".dxf") <> "" Then
    fnev = fnev9g
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9f & ".dxf") <> "" Then
    fnev = fnev9f
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9e & ".dxf") <> "" Then
    fnev = fnev9e
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9d & ".dxf") <> "" Then
    fnev = fnev9d
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9c & ".dxf") <> "" Then
    fnev = fnev9c
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9b & ".dxf") <> "" Then
    fnev = fnev9b
    ElseIf Dir("l:\sw2010rajz\dxf-k szöveghez\" & fnev9a & ".dxf") <> "" Then
    fnev = fnev9a

    Ezt a belinkelt részt, lehet e kevesebb sorral egyszerűbben megoldani, gondolok itt tömbre meg ciklusra például. A betűk indexeket jelölnek. Ez a programrész, arról szól, hogy van e az adott helyen indexes fájl és amilyent talál azzal folytatódik a feladat. Fontos a sorrend azaz, hogy előbb találja meg pl a b indexűt, mint az a indexűt és persze csak a b-s a jó. Azaz a legmagasabb indexűt keresse az legyen az eredmény.
    Másik gond. Részben kapcsolódik az előzőhöz csak itt az alap amihez az indexet kapcsolni kell kötőjelet tartalmaz. Pl: 12345-1 Ebből kellene ezt csinálni: 12345a-1 Itt az első feltétel, azt eldönteni, hogy kötőjeles vagy nem a kiinduló név, ezután megtalálni a kötőjelet és elé beszúrni az indexet. Annyi, ha ez segít, hogy a kötőjel előtti számok(karakterek) 4-5 lehet, a kötőjel utáni a kötőjellel együtt 2-4 karakter lehet.
    Ennyi. Előre is köszönöm a válaszokat.

  • Connie21
    csendes tag

    A makrórögzítő fog tudni segíteni neked a megoldásban. Bekapcsolod a makrórögzítőt, majd ki és bekapcsolod az adatfeliratokat. Ezután már csak vissza kell nézned, hogy mit vettél fel.

    Basszus, tényleg! Köszönöm szépen, ez most rengeteget segített.:)

  • martonx
    veterán

    Sziasztok!
    Azt kéne megoldanom valahogy egy makróval excelben, hogy egy diagramon az adatfeliratok megjelenítését ki be tudjam kapcsolgatni egy gombbal. Nagyon kezdő vagyok még makrók terén, és nem tudom, hogy a diagram tulajdonságaira hogyan tudok hivatkozni, mert gondolom azoknál kéne megváltoztatni, hogy látsszon-e az adatfelirat. Sőt, még azt se tudom, hogy a diagramra hogyan hivatkozhatok, honnét tudom kideríteni a diagram nevét?
    Tudnátok segíteni a megoldásban?

    A makrórögzítő fog tudni segíteni neked a megoldásban. Bekapcsolod a makrórögzítőt, majd ki és bekapcsolod az adatfeliratokat. Ezután már csak vissza kell nézned, hogy mit vettél fel.

  • Connie21
    csendes tag

    Sziasztok!
    Azt kéne megoldanom valahogy egy makróval excelben, hogy egy diagramon az adatfeliratok megjelenítését ki be tudjam kapcsolgatni egy gombbal. Nagyon kezdő vagyok még makrók terén, és nem tudom, hogy a diagram tulajdonságaira hogyan tudok hivatkozni, mert gondolom azoknál kéne megváltoztatni, hogy látsszon-e az adatfelirat. Sőt, még azt se tudom, hogy a diagramra hogyan hivatkozhatok, honnét tudom kideríteni a diagram nevét?
    Tudnátok segíteni a megoldásban?

  • martonx
    veterán

    Az nagy pofátlanság lenne tőlem ha segítséged kérném oly módon hogy megmutatom nked a kódot amit készítettem és ahhoz tennék fel kérdéseket,mert eléggé elakadtam most..és az idő meg nagyon szorít..a tanárom meg semmilyen mailre nem válaszol...
    Ugyhogy most elég szarba vagyok...persze mondhatsz nemet....de ha naon naon segítesz nem lennék hálátlan..Nos?

    Tedd fel valahova, aztán linkeld ide. Valaki majd hátha segít.

  • maxi19
    csendes tag

    Tag mezőbe rakod, hogy van-e akna és ott is ellenőrzöd le.
    A módja a szomszédos mezők ellenőrzésének, hogy a labeleket tömbbe rakod és a tömb indexelésével tudod elérni a szomszédos mezőket.

    Az nagy pofátlanság lenne tőlem ha segítséged kérném oly módon hogy megmutatom nked a kódot amit készítettem és ahhoz tennék fel kérdéseket,mert eléggé elakadtam most..és az idő meg nagyon szorít..a tanárom meg semmilyen mailre nem válaszol...
    Ugyhogy most elég szarba vagyok...persze mondhatsz nemet....de ha naon naon segítesz nem lennék hálátlan..Nos?

  • sztanozs
    veterán

    Na random szám generálással kiosztottam véleltlenszerűen a helyeket ahol vannak illetve ahol nincsenek aknák.A kérdésem hogy azt hogyan lehet elérni,hogy ezek ne látszódjanak csak egy kattintásra illetve annak mi a módja,hogy ha nincs akna akkor körbejárjam a körötte levő mezőket és ősszeadjam az ott rejztőző aknákat majd kiírjam magába a mezőbe,tehát konkrétan a bejárás érdekelne?

    Tag mezőbe rakod, hogy van-e akna és ott is ellenőrzöd le.
    A módja a szomszédos mezők ellenőrzésének, hogy a labeleket tömbbe rakod és a tömb indexelésével tudod elérni a szomszédos mezőket.

  • maxi19
    csendes tag

    Na random szám generálással kiosztottam véleltlenszerűen a helyeket ahol vannak illetve ahol nincsenek aknák.A kérdésem hogy azt hogyan lehet elérni,hogy ezek ne látszódjanak csak egy kattintásra illetve annak mi a módja,hogy ha nincs akna akkor körbejárjam a körötte levő mezőket és ősszeadjam az ott rejztőző aknákat majd kiírjam magába a mezőbe,tehát konkrétan a bejárás érdekelne?

  • sztanozs
    veterán

    Ez elsőre jónak tűnik.
    A legegyszerűbb, ha rögtön tömböt generálsz a labeleknek és a Tag tulajdonságba teszed az aknát.
    Randommal le tudod generálni a véletlenszámokat, csak arra kell figyelni, hogy ahova tettél már aknát, oda megint ne kerüljön (kevesebb aknád lesz különben) - kb mint egy lottó húzásnál.

    Onclick-re megnézed, hogy van-e akna, ha van akkor robban, ha nincs akkor megnézed a szomszédokat és összeszámolod mennyiben van akna és az írod ki.
    Arra az esetre ha nincs akna egy kicsit nehezebb megoldani, hogy szépen "kiürítse" a terepet, mint ahogy a windowsos aknakereső csinálja. De ha ez nincs bent a feladatban, akkor elég ha 0-t írsz ki.

  • sztanozs
    veterán

    Első körben kipakolnék labeleket egy form felületre for ciklus segítségével.Majd randomgenerátorral kis akna képeket generálnék a labelek textjébe,utána pedig elrejteném valahogy őket.Első problémám máris az,hogy hogyan tudnék csak bizonyos label,textekbe aknákat generálni,mármint a randomgenerátor működését ismerem csak nem tudom hogy erre hogyan tudom azt ráfogni,illetve ha ez meg van,akkor az is kérdéses,hogy hogyan lehet azt elérni hogy az aknák kattintással megjelenjenek?

    Ez elsőre jónak tűnik.
    A legegyszerűbb, ha rögtön tömböt generálsz a labeleknek és a Tag tulajdonságba teszed az aknát.
    Randommal le tudod generálni a véletlenszámokat, csak arra kell figyelni, hogy ahova tettél már aknát, oda megint ne kerüljön (kevesebb aknád lesz különben) - kb mint egy lottó húzásnál.

  • maxi19
    csendes tag

    Első körben kipakolnék labeleket egy form felületre for ciklus segítségével.Majd randomgenerátorral kis akna képeket generálnék a labelek textjébe,utána pedig elrejteném valahogy őket.Első problémám máris az,hogy hogyan tudnék csak bizonyos label,textekbe aknákat generálni,mármint a randomgenerátor működését ismerem csak nem tudom hogy erre hogyan tudom azt ráfogni,illetve ha ez meg van,akkor az is kérdéses,hogy hogyan lehet azt elérni hogy az aknák kattintással megjelenjenek?

  • sztanozs
    veterán

    Sziasztok.
    Sulis beadandóm egy aknakereső játék megírása visual studio 2010 expresszel,sajnos nem nagyon vagyok otthon a témában,ezért kérnék segítséget.Magát a játék felületet még el tudom készíteni,de tovább nem tudom hogyan kéne menni?Ehhez kérnék segítséget:)

    Meséld el, hogy készítenéd el a felületet és megmondom, hogy tudunk-e segíteni.

  • maxi19
    csendes tag

    Sziasztok.
    Sulis beadandóm egy aknakereső játék megírása visual studio 2010 expresszel,sajnos nem nagyon vagyok otthon a témában,ezért kérnék segítséget.Magát a játék felületet még el tudom készíteni,de tovább nem tudom hogyan kéne menni?Ehhez kérnék segítséget:)

  • új kérdező
    csendes tag

    Erre való mondjuk egy while ciklus, ami addig lépdel a sorokon lefelé, amíg az A oszlopban lát értéket.

    sor = 1
    while (cells(sor,1)<>"")
    ...
    itt csinálok valamit
    ...
    sor = sor + 1
    end while

    Köszi a választ. Maga a ciklus jó lenne, csak az a baj, hogy a userformal nem foglalkozik, azaz nem várja meg amíg az elvégzi a dolgát. Azaz a ciklus első lefutásakor megmutatja a formot de nem lehet rá kattintani csak miután a ciklus végzett, akkor meg már késő. És ez a probléma, hogy a Userformot is lehessen használni és mikor az végez akkor ugorjon a ciklus.

  • martonx
    veterán

    Tisztelt Mindenki!
    Ezúton szeretnék segítséget kérni. autocad 2010-ben írtam egy makrót (VB6) Ami annyit tesz, hogy egy excel táblából átvesz egy cella értéket és megnyitja a hozzá tartozó fájlt és beilleszti a másik oszlopban lévő szöveget blokként, itt jön egy modalis Userform amiben a felhasználó szétrobbantja a beillesztett blokkot. A userformot szerettem volna egy olyannal kiváltani, hogy egy adott billentyűre történjen meg a szétrobbantás de úgy hogy a megnyomás előtt a felhasználó a beillesztett blokkot tudja forgatni meg stb. De mivel ezt nem tudom ezért lett a modális Userform, mivel nagyon- nagyon gyenge vagyok a témában.
    De igazából nem ezt a fő gondom.Erre a feladatra szeretnék egy ciklust kérni, azaz, hogy az exceltáblában menjen végig a sorokon amíg el nem fogynak az adatok, de úgy, hogy várja meg amíg a Userformon lévő művelet is lezajlik.
    Sub Example_StartAngle()
    Dim xlApp As Object

    Dim xlBook As Object
    Dim xlBooks As Object
    Dim xlSheets As Object
    Dim xlSheet As Object
    Dim xlCells As Object
    Dim xlRange As Object
    Dim futott As Boolean
    futott = True
    On Error Resume Next

    Set xlApp = GetObject(, "Excel.Application")
    If xlApp Is Nothing Then
    futott = False

    Set xlApp = CreateObject("Excel.Application")

    If xlApp Is Nothing Then

    MsgBox "nem sikerült elindítani az exel-et"
    End If
    End If
    ' AutoCAD alkalmazás ablak megjelenítése
    xlApp.Application.Visible = True
    Set xlBooks = xlApp.Workbooks
    If xlBooks.Count > 0 Then
    Set xlBook = xlBooks.Item(1)
    End If
    If xlBooks.Count = 0 Then
    Set xlBook = xlBooks.Open("C:\Users\ko\Documents\számbeíráshoz.xlsx")
    End If
    Set xlSheets = xlBook.worksheets
    Set xlSheet = xlSheets.Item(sheetName) '<--- change a sheet name (might be a sheet number instead)
    xlSheet.Application.Visible = True
    Set xlCells = xlSheet.Cells
    Set xlRange = xlCells.Range("$A1")

    Dim AcadApp As AcadApplication
    Dim MyDxf As AcadDocument
    Set AcadApp = GetObject(, "AutoCAD.Application")
    Dim fnev As String

    fnev = Cells(s, 1)
    If fnev = "" Then
    xlApp.Workbooks.Close
    xlApp.Quit
    Set xlApp = Nothing
    MsgBox "vége"
    Exit Sub
    End If
    Set MyDxf = AcadApp.Documents.Open("l:\sw2010rajz\dxf-k szöveghez\" & fnev & ".dxf")
    ZoomExtents
    Dim newLayer As AcadLayer

    ' Create a Layer and make it the active layer
    Set newLayer = ThisDrawing.Layers.Add("gravir")
    newLayer.Color = acRed
    ThisDrawing.ActiveLayer = newLayer
    ThisDrawing.Regen (True)
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint As Variant
    Dim height As Double
    textString = Cells(s, 2)
    insertionPoint = ThisDrawing.Utility.GetPoint(, "Kattints a beillesztési ponthoz: ")
    height = 5
    Set textObj = ThisDrawing.ModelSpace.AddText(textString, insertionPoint, height)
    ZoomExtents
    Dim exportFile As String
    exportFile = "c:\wmf-k\" & fnev & ""

    Dim sset As AcadSelectionSet
    Set sset = ThisDrawing.SelectionSets.Add("NEWSS")
    sset.Select acSelectionSetLast
    'sset.Select acSelectionSetAll
    ' Export the current drawing to the file specified above.
    ThisDrawing.Export exportFile, "WMF", sset
    textObj.Delete


    Dim blockRefObj As AcadBlockReference
    Dim importFile As String
    Dim InsertPoint As Variant
    Dim scalefactor As Double
    InsertPoint = ThisDrawing.Utility.GetPoint(, "Kattints a beillesztési ponthoz: ")

    Set blockRefObj = ThisDrawing.Import("c:\wmf-k\" & fnev & ".wmf", InsertPoint, 2)
    ZoomExtents



    Load UserForm1
    UserForm1.TextBox1.Text = "" & fnev & ""

    UserForm1.Show

    Kill "c:\wmf-k\" & fnev & ".wmf"
    SaveAs ("l:\sw2010rajz\dxf-k szöveghez\k\" & fnev & ".dxf"), ac2000_dxf
    ThisDrawing.Application.ActiveDocument.Close (True)

    xlApp.Workbooks.Close
    xlApp.Quit
    Set xlApp = Nothing
    End Sub

    Private Sub CommandButton1_Click()

    Dim AcadApp As AcadApplication
    Dim MyDxf As AcadDocument
    Set AcadApp = GetObject(, "AutoCAD.Application")
    UserForm1.Hide
    fnev = TextBox1.Text
    Dim intFilterType(0) As Integer
    Dim varFilterData(0)
    intFilterType(0) = 0
    varFilterData(0) = "Insert"
    Dim explodedObjects As Variant
    Dim I As Integer
    I = 0
    Dim objSSet As AcadSelectionSet
    Dim blkEntry As AcadBlockReference
    Do Until I = 1 'explodes all blocks
    Set objSSet = ThisDrawing.SelectionSets.Add("Block")
    objSSet.Select acSelectionSetAll, , , intFilterType, varFilterData
    For Each blkEntry In objSSet
    explodedObjects = blkEntry.Explode
    Dim C As Integer
    For C = 0 To UBound(explodedObjects)
    explodedObjects(C).Update
    explodedObjects(C).Color = acByLayer
    explodedObjects(C).Lineweight = acLnWtByLayer
    explodedObjects(C).Update
    Next
    blkEntry.Delete
    Next blkEntry
    ThisDrawing.SelectionSets.Item("Block").Delete
    I = I + 1
    Loop

    End Sub

    A programban lehet, hogy még vannak felesleges sorok de sebaj. a válaszokat előre is köszönöm.

    Erre való mondjuk egy while ciklus, ami addig lépdel a sorokon lefelé, amíg az A oszlopban lát értéket.

    sor = 1
    while (cells(sor,1)<>"")
    ...
    itt csinálok valamit
    ...
    sor = sor + 1
    end while

  • új kérdező
    csendes tag

    Tisztelt Mindenki!
    Ezúton szeretnék segítséget kérni. autocad 2010-ben írtam egy makrót (VB6) Ami annyit tesz, hogy egy excel táblából átvesz egy cella értéket és megnyitja a hozzá tartozó fájlt és beilleszti a másik oszlopban lévő szöveget blokként, itt jön egy modalis Userform amiben a felhasználó szétrobbantja a beillesztett blokkot. A userformot szerettem volna egy olyannal kiváltani, hogy egy adott billentyűre történjen meg a szétrobbantás de úgy hogy a megnyomás előtt a felhasználó a beillesztett blokkot tudja forgatni meg stb. De mivel ezt nem tudom ezért lett a modális Userform, mivel nagyon- nagyon gyenge vagyok a témában.
    De igazából nem ezt a fő gondom.Erre a feladatra szeretnék egy ciklust kérni, azaz, hogy az exceltáblában menjen végig a sorokon amíg el nem fogynak az adatok, de úgy, hogy várja meg amíg a Userformon lévő művelet is lezajlik.
    Sub Example_StartAngle()
    Dim xlApp As Object

    Dim xlBook As Object
    Dim xlBooks As Object
    Dim xlSheets As Object
    Dim xlSheet As Object
    Dim xlCells As Object
    Dim xlRange As Object
    Dim futott As Boolean
    futott = True
    On Error Resume Next

    Set xlApp = GetObject(, "Excel.Application")
    If xlApp Is Nothing Then
    futott = False

    Set xlApp = CreateObject("Excel.Application")

    If xlApp Is Nothing Then

    MsgBox "nem sikerült elindítani az exel-et"
    End If
    End If
    ' AutoCAD alkalmazás ablak megjelenítése
    xlApp.Application.Visible = True
    Set xlBooks = xlApp.Workbooks
    If xlBooks.Count > 0 Then
    Set xlBook = xlBooks.Item(1)
    End If
    If xlBooks.Count = 0 Then
    Set xlBook = xlBooks.Open("C:\Users\ko\Documents\számbeíráshoz.xlsx")
    End If
    Set xlSheets = xlBook.worksheets
    Set xlSheet = xlSheets.Item(sheetName) '<--- change a sheet name (might be a sheet number instead)
    xlSheet.Application.Visible = True
    Set xlCells = xlSheet.Cells
    Set xlRange = xlCells.Range("$A1")

    Dim AcadApp As AcadApplication
    Dim MyDxf As AcadDocument
    Set AcadApp = GetObject(, "AutoCAD.Application")
    Dim fnev As String

    fnev = Cells(s, 1)
    If fnev = "" Then
    xlApp.Workbooks.Close
    xlApp.Quit
    Set xlApp = Nothing
    MsgBox "vége"
    Exit Sub
    End If
    Set MyDxf = AcadApp.Documents.Open("l:\sw2010rajz\dxf-k szöveghez\" & fnev & ".dxf")
    ZoomExtents
    Dim newLayer As AcadLayer

    ' Create a Layer and make it the active layer
    Set newLayer = ThisDrawing.Layers.Add("gravir")
    newLayer.Color = acRed
    ThisDrawing.ActiveLayer = newLayer
    ThisDrawing.Regen (True)
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint As Variant
    Dim height As Double
    textString = Cells(s, 2)
    insertionPoint = ThisDrawing.Utility.GetPoint(, "Kattints a beillesztési ponthoz: ")
    height = 5
    Set textObj = ThisDrawing.ModelSpace.AddText(textString, insertionPoint, height)
    ZoomExtents
    Dim exportFile As String
    exportFile = "c:\wmf-k\" & fnev & ""

    Dim sset As AcadSelectionSet
    Set sset = ThisDrawing.SelectionSets.Add("NEWSS")
    sset.Select acSelectionSetLast
    'sset.Select acSelectionSetAll
    ' Export the current drawing to the file specified above.
    ThisDrawing.Export exportFile, "WMF", sset
    textObj.Delete


    Dim blockRefObj As AcadBlockReference
    Dim importFile As String
    Dim InsertPoint As Variant
    Dim scalefactor As Double
    InsertPoint = ThisDrawing.Utility.GetPoint(, "Kattints a beillesztési ponthoz: ")

    Set blockRefObj = ThisDrawing.Import("c:\wmf-k\" & fnev & ".wmf", InsertPoint, 2)
    ZoomExtents



    Load UserForm1
    UserForm1.TextBox1.Text = "" & fnev & ""

    UserForm1.Show

    Kill "c:\wmf-k\" & fnev & ".wmf"
    SaveAs ("l:\sw2010rajz\dxf-k szöveghez\k\" & fnev & ".dxf"), ac2000_dxf
    ThisDrawing.Application.ActiveDocument.Close (True)

    xlApp.Workbooks.Close
    xlApp.Quit
    Set xlApp = Nothing
    End Sub

    Private Sub CommandButton1_Click()

    Dim AcadApp As AcadApplication
    Dim MyDxf As AcadDocument
    Set AcadApp = GetObject(, "AutoCAD.Application")
    UserForm1.Hide
    fnev = TextBox1.Text
    Dim intFilterType(0) As Integer
    Dim varFilterData(0)
    intFilterType(0) = 0
    varFilterData(0) = "Insert"
    Dim explodedObjects As Variant
    Dim I As Integer
    I = 0
    Dim objSSet As AcadSelectionSet
    Dim blkEntry As AcadBlockReference
    Do Until I = 1 'explodes all blocks
    Set objSSet = ThisDrawing.SelectionSets.Add("Block")
    objSSet.Select acSelectionSetAll, , , intFilterType, varFilterData
    For Each blkEntry In objSSet
    explodedObjects = blkEntry.Explode
    Dim C As Integer
    For C = 0 To UBound(explodedObjects)
    explodedObjects(C).Update
    explodedObjects(C).Color = acByLayer
    explodedObjects(C).Lineweight = acLnWtByLayer
    explodedObjects(C).Update
    Next
    blkEntry.Delete
    Next blkEntry
    ThisDrawing.SelectionSets.Item("Block").Delete
    I = I + 1
    Loop

    End Sub

    A programban lehet, hogy még vannak felesleges sorok de sebaj. a válaszokat előre is köszönöm.

  • FranZi
    csendes tag

    Sziasztok,
    keresek First Imnpression Chart 32-bites OCX-et, vagy telepítőt, vcfi32.ocx
    és
    Apex True DBGrid-et, tdbg32.ocx-et, illetve telepítőt. Kő régi holmi, de most módosítanom kellene egy régi programot, ami Visual Basic 5.0-ban íródott.

    Millió hála előre is... :R

  • G.I.JOE
    senior tag

    Ez így nem tűnik rossznak első ránézésre.
    A "Nincs elég szabad memória", nem lehet hogy azt jelenti, hogy tényleg nincs? Ugyanazon a gépen futtatod VS-ből, mint az exe-t?
    Ha valami hiba történik a kódban mivel nem using-ot használsz, és nincs semmi hibakezelés benne, simán nyitva tudnak maradni az excelek. Egy idő után akár 20-30 párhuzamosan futó exceled is lehet.

    Áhh, gép bekapcsolás utáni első indításkor is ezt írja ki. :(

    Usinggal hogyan kellene?

  • martonx
    veterán

    Helló!

    Csak ismerkedek a VB-el és szeretnék egy egyszerű progit írni, ami excelből egy tabulátoros unicode txt-t csinál. Nos, az unicode-dal is van gondom (OpenTextFileWriter), de a fő bajom az, hogy ha VStudioból indítom a progit, akkor lefut rendesen, de ha a generált exe-t indítom el és eljut az excel műveletekig, akkor az "Nincs elég szabad memória ..." hibaüzenettel leáll.

    Valami banális dolgot nem tudok?

    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim munkakonyvtar As String = "c:\" 'itt a forras excel es ide generalja az eredmenyfilet
    Dim file = My.Computer.FileSystem.OpenTextFileWriter(munkakonyvtar + "test.txt", False) 'kimeneti file
    Dim munkalap As String = "Munka1" 'a használandó munkalap neve az excelben
    Dim sor As Integer = 6 'aktualis excel cella sorszama, kezdoertek az elso adat sor száma
    Dim oszlop As Integer = 2 'aktualis excel cella oszlop
    Dim cella As String = "" 'aktualis excel cella tartalma
    Dim MH_sor As String = "" 'aktualis sor a kimeneti fileba


    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Open(munkakonyvtar + "test1.xlsx")
    xlWorkSheet = xlWorkBook.Worksheets(munkalap)
    cella = xlWorkSheet.Cells(sor, 1).value
    Do While Len(Trim(cella)) > 0
    MH_sor = xlWorkSheet.Cells(sor, 2).value + Chr(9) + xlWorkSheet.Cells(sor, 3).value + Chr(9) + xlWorkSheet.Cells(sor, 4).value
    file.WriteLine(MH_sor)
    sor = sor + 1
    cella = xlWorkSheet.Cells(sor, 1).value
    Loop
    MsgBox("Kész!")

    xlWorkBook.Save()
    xlWorkBook.Close()
    xlApp.Quit()
    file.Close()
    releaseObject(xlApp)
    releaseObject(xlWorkBook)
    releaseObject(xlWorkSheet)

    Ez így nem tűnik rossznak első ránézésre.
    A "Nincs elég szabad memória", nem lehet hogy azt jelenti, hogy tényleg nincs? Ugyanazon a gépen futtatod VS-ből, mint az exe-t?
    Ha valami hiba történik a kódban mivel nem using-ot használsz, és nincs semmi hibakezelés benne, simán nyitva tudnak maradni az excelek. Egy idő után akár 20-30 párhuzamosan futó exceled is lehet.

  • G.I.JOE
    senior tag

    Helló!

    Csak ismerkedek a VB-el és szeretnék egy egyszerű progit írni, ami excelből egy tabulátoros unicode txt-t csinál. Nos, az unicode-dal is van gondom (OpenTextFileWriter), de a fő bajom az, hogy ha VStudioból indítom a progit, akkor lefut rendesen, de ha a generált exe-t indítom el és eljut az excel műveletekig, akkor az "Nincs elég szabad memória ..." hibaüzenettel leáll.

    Valami banális dolgot nem tudok?

    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim munkakonyvtar As String = "c:\" 'itt a forras excel es ide generalja az eredmenyfilet
    Dim file = My.Computer.FileSystem.OpenTextFileWriter(munkakonyvtar + "test.txt", False) 'kimeneti file
    Dim munkalap As String = "Munka1" 'a használandó munkalap neve az excelben
    Dim sor As Integer = 6 'aktualis excel cella sorszama, kezdoertek az elso adat sor száma
    Dim oszlop As Integer = 2 'aktualis excel cella oszlop
    Dim cella As String = "" 'aktualis excel cella tartalma
    Dim MH_sor As String = "" 'aktualis sor a kimeneti fileba


    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Open(munkakonyvtar + "test1.xlsx")
    xlWorkSheet = xlWorkBook.Worksheets(munkalap)
    cella = xlWorkSheet.Cells(sor, 1).value
    Do While Len(Trim(cella)) > 0
    MH_sor = xlWorkSheet.Cells(sor, 2).value + Chr(9) + xlWorkSheet.Cells(sor, 3).value + Chr(9) + xlWorkSheet.Cells(sor, 4).value
    file.WriteLine(MH_sor)
    sor = sor + 1
    cella = xlWorkSheet.Cells(sor, 1).value
    Loop
    MsgBox("Kész!")

    xlWorkBook.Save()
    xlWorkBook.Close()
    xlApp.Quit()
    file.Close()
    releaseObject(xlApp)
    releaseObject(xlWorkBook)
    releaseObject(xlWorkSheet)

  • bepken
    veterán

    félreértés, nem a VB-vel van gond, hanem a winforms-sal.
    Pontosabban gond ezzel sincs, csak már lassan 10 éve legacy állapotban létezik. És persze lész még 10 év múlva is, de minek most elkezdeni bárkinek is beleásni magát egy legacy technológiába?

    Amit javaslok helyette a WPF (legújabban windows store), de amit leginkább javaslok az az ASP.NET (MVC). Ezeket mind lehet VB-vel is használni, bár időközben a VB helyett erősen a C# terjedt el, ne lepődje meg, ha a tutorialok 80%-át csak C#-ban fogod találni.

    köszi! :)

    suli kapcsán úgy is muszáj C-vel foglalkozzak...szóval lehet, hogy amúgy sem árt meg, ha inkább a C#-ba merülök el jobban.

    persze azzal is tisztában vagyok, hogy ehhez még rengeteg alapozásra van szükség, csak az irányra voltam kíváncsi.

  • martonx
    veterán

    írtátok korábban, hogy a VB már nem igazán érdemli meg, hogy jobban beleássa magát az ember...
    tehát az volna a kérdésem, hogy melyik az az alternatíva, amivel a VB-hez hasonlóan egyszerűbb programokat lehetne tervezni?

    félreértés, nem a VB-vel van gond, hanem a winforms-sal.
    Pontosabban gond ezzel sincs, csak már lassan 10 éve legacy állapotban létezik. És persze lész még 10 év múlva is, de minek most elkezdeni bárkinek is beleásni magát egy legacy technológiába?

    Amit javaslok helyette a WPF (legújabban windows store), de amit leginkább javaslok az az ASP.NET (MVC). Ezeket mind lehet VB-vel is használni, bár időközben a VB helyett erősen a C# terjedt el, ne lepődje meg, ha a tutorialok 80%-át csak C#-ban fogod találni.

  • bepken
    veterán

    írtátok korábban, hogy a VB már nem igazán érdemli meg, hogy jobban beleássa magát az ember...
    tehát az volna a kérdésem, hogy melyik az az alternatíva, amivel a VB-hez hasonlóan egyszerűbb programokat lehetne tervezni?

  • sztanozs
    veterán

    Sziasztok!
    Hogyan kell munkafüzetet (excel) váltani makróval. Lehetne-e egy cellában megjelenő munkafüzet nevet használni?
    Az a probléma, hogy több munkafüzethez is használni kellene, de mindegyiknek más a neve, csak az a munkafüzet azonos, ahonnan indítanám a makrót.
    Arra gondoltam, hogy egy legördülő listából kiválasztom azt a munkafüzetet amelyikre váltani kellene.
    Mielőtt valaki szóvá tenné, hogy ennek mi az értelme? Csak annyi, hogy így lehetne egy ciklussal átpakolni adatokat.
    Üdv

    Nem kell megjeleníteni a munkafüzetet amibe vagy amiből át akarod rakni az adatokat.
    Az összes munkafüzetet megtalálod az Application.Workbooks collection-ben, és a kiválaszott workbook adott worksheet-jéről tudsz másolni egy másik wokbook másik worksheet-jére.

  • óbébai
    csendes tag

    Sziasztok!
    Hogyan kell munkafüzetet (excel) váltani makróval. Lehetne-e egy cellában megjelenő munkafüzet nevet használni?
    Az a probléma, hogy több munkafüzethez is használni kellene, de mindegyiknek más a neve, csak az a munkafüzet azonos, ahonnan indítanám a makrót.
    Arra gondoltam, hogy egy legördülő listából kiválasztom azt a munkafüzetet amelyikre váltani kellene.
    Mielőtt valaki szóvá tenné, hogy ennek mi az értelme? Csak annyi, hogy így lehetne egy ciklussal átpakolni adatokat.
    Üdv

  • bepken
    veterán

    "egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?"

    Ez szvsz előny. Jellemzően sokkal jobban szeretek varázslóval kattintgatni (pár linux-os konzol buzin kívül az emberiség 99,99%-a ugyanígy van ezzel). Ugyanakkor csomó olyan eset létezik, amikor muszáj kódból lekezelned a dinamikusan létrehozott formjaidat, ekkor nagy előny, hogy kétféle megközelítéssel is dolgozhatsz.
    A kódból pedig minden kiderül, ugyanis lekérdezhető.

    igazad van :) sőt! igazából, amikor belefogtam ebbe a kis programba, még azt hittem, ennyit se kell majd a kóddal foglalkoznom... :D

    egy verziót már sikerült megcsinálnom a varázsló segítségével - tehát csak importáltam a táblát, betettem azt az egy szövegdobozt, majd megadtam neki a forrást. szóval valóban sokkal kényelmesebb volt na.

  • martonx
    veterán

    Hogyan tudnám optimalizálni a dolgot, hogy pl. a reset-et ne keljen újra lekódolni?
    ...
    If e.KeyCode = Keys.F3 Then
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End if
    ....
    Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End Sun

    Vagyis milyen parancsal tudom meghívni a "resetgomb_Clik" rutint?
    If e.KeyCode = Keys.F3 Then resetgomb_Click()?

    Erre valóak a metódusok, függvények. A kérdéses kódrészletet kiemeled egy public izé ResetButtons (...) függvénybe, és azt hívod meg a kérdéses helyeken.

  • cigam
    titán

    Csináltam egy stoppert. Azt szeretném, hogy billentyűzettel is lehessen vezérelni, de nem tudom hogyan. Amit találtam példakódot nem működik:

    Public Class Form1
    Dim perc As String = "00"
    Dim masodperc As String = "00"
    Dim idoszoveg As String = "00:00"

    Private Sub ido_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ido.KeyDown

    If e.KeyCode = Keys.F1 Then Timer1.Start()
    End Sub
    Private Sub startgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startgomb.Click
    Timer1.Start()
    End Sub

    Private Sub stopgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopgomb.Click
    Timer1.Stop()
    End Sub

    Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    masodperc += 1
    If masodperc = "60" Then
    masodperc = "0"
    perc += 1
    If perc < 10 Then perc = "0" & perc
    End If
    If masodperc < 10 Then masodperc = "0" & masodperc
    idoszoveg = perc & ":" & masodperc
    If perc = "100" Then
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    End If
    ido.Text = idoszoveg
    End Sub
    End Class

    Hogyan tudnám optimalizálni a dolgot, hogy pl. a reset-et ne keljen újra lekódolni?
    ...
    If e.KeyCode = Keys.F3 Then
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End if
    ....
    Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End Sun

    Vagyis milyen parancsal tudom meghívni a "resetgomb_Clik" rutint?
    If e.KeyCode = Keys.F3 Then resetgomb_Click()?

  • martonx
    veterán

    Nem, ez engem is zavar tegnap óta :D

    Vissza akarom kapni a régi jó BASIC nyelvet "visual" nélkül. Eszméletlen miket csináltunk anno a a 8bites otthoni gépekkell...

    martonx

    Nem valószínű, hogy továbblépek. Az otthoni apróságok, és kissebb céges, a munkámat megkönnyítő programocskákat faragok a magam szórakoztatására. Ez a stopper sem több mint 20-30 sor, mégis elvarázsol mire (vagyok) képes.
    A továbblépés azért is kétséges, mert pénzt nem adok értük, és nem is keresek velük. Szórakozásnak meg pöttyet drágák, és tényleg nem használnám ki. Jelenleg elég távolinak tűnik, hogy az VBexpress korlátaiba ütközzek. Bár kíváncsi vagyok, hogy egy WindowsPhone program, (pl. ez a stopper) mennyivel bonyolultabb.

    "Vissza akarom kapni a régi jó BASIC nyelvet "visual" nélkül. Eszméletlen miket csináltunk anno a a 8bites otthoni gépekkell..."

    Hál'istennek azért a világ néha fejlődik is, gyakran csak nagy köröket fut a fejlődés, de azért egy vb.net-et összehasonlítva egy C64-es BASIC-el a fejlődés igen szembeötlő.

    "A továbblépés azért is kétséges, mert pénzt nem adok értük, és nem is keresek velük. Szórakozásnak meg pöttyet drágák, és tényleg nem használnám ki."

    Oké, nekem tök mindegy miben programozol, ízlések és pofonok. Viszont legalább ne írj butaságot, hogy azért nem akarsz továbblépni, mert drágák, és nem adsz értük pénzt. Mi a drága egy ingyenes wpf-en? És egy ingyenes ASP.NET-en?
    Szóval használj nyugodtan winforms, simán elég lehet sok mindenre. De legalább ne beszélj butaságot.

  • martonx
    veterán

    ja hát én meg ~2 hete, szóval túl sokat én sem tudok segíteni, csak abban, amilyen problémával én is találkoztam eddig :DDD

    nálam a billentyű figyelés így néz ki:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    KeyPreview = True

    ....

    tehát (az én olvasatomban legalábbis), ha az adott form aktív, akkor figyeli a leütött billentyűket

    illetve van egy "KeyPress" event is:

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then

    ....

    ez meg az Enter billentyűt várja (ASCII kód: 13)

    egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?

    "egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?"

    Ez szvsz előny. Jellemzően sokkal jobban szeretek varázslóval kattintgatni (pár linux-os konzol buzin kívül az emberiség 99,99%-a ugyanígy van ezzel). Ugyanakkor csomó olyan eset létezik, amikor muszáj kódból lekezelned a dinamikusan létrehozott formjaidat, ekkor nagy előny, hogy kétféle megközelítéssel is dolgozhatsz.
    A kódból pedig minden kiderül, ugyanis lekérdezhető.

  • cigam
    titán

    ja hát én meg ~2 hete, szóval túl sokat én sem tudok segíteni, csak abban, amilyen problémával én is találkoztam eddig :DDD

    nálam a billentyű figyelés így néz ki:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    KeyPreview = True

    ....

    tehát (az én olvasatomban legalábbis), ha az adott form aktív, akkor figyeli a leütött billentyűket

    illetve van egy "KeyPress" event is:

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then

    ....

    ez meg az Enter billentyűt várja (ASCII kód: 13)

    egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?

    Nem, ez engem is zavar tegnap óta :D

    Vissza akarom kapni a régi jó BASIC nyelvet "visual" nélkül. Eszméletlen miket csináltunk anno a a 8bites otthoni gépekkell...

    martonx

    Nem valószínű, hogy továbblépek. Az otthoni apróságok, és kissebb céges, a munkámat megkönnyítő programocskákat faragok a magam szórakoztatására. Ez a stopper sem több mint 20-30 sor, mégis elvarázsol mire (vagyok) képes.
    A továbblépés azért is kétséges, mert pénzt nem adok értük, és nem is keresek velük. Szórakozásnak meg pöttyet drágák, és tényleg nem használnám ki. Jelenleg elég távolinak tűnik, hogy az VBexpress korlátaiba ütközzek. Bár kíváncsi vagyok, hogy egy WindowsPhone program, (pl. ez a stopper) mennyivel bonyolultabb.

  • bepken
    veterán

    a Form_Load részhez? :B
    1 hete ismerkedem a VB2010expressel, semmi nem evidencia.

    Viszont most megint átnéztem jobboldalt a properties ablakban a "Form1 System.Windows.Forms.Form" listájában a "KeyDown"-hoz tudtam társítani az "ido_KeyDown" szubrutint, és most működik!

    - A form load részt hol találom, és a program "melyik része" ez?
    - Ez a "Form1 System.Windows.Forms.Form" micsuda?

    ja hát én meg ~2 hete, szóval túl sokat én sem tudok segíteni, csak abban, amilyen problémával én is találkoztam eddig :DDD

    nálam a billentyű figyelés így néz ki:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    KeyPreview = True

    ....

    tehát (az én olvasatomban legalábbis), ha az adott form aktív, akkor figyeli a leütött billentyűket

    illetve van egy "KeyPress" event is:

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then

    ....

    ez meg az Enter billentyűt várja (ASCII kód: 13)

    egyébként engem kifejezetten zavar, hogy sok dolgot a properties résznél és magában a kódban is meg lehet adni...pontosabban az, hogy a properties résznél már beállított értékek nem derülnek ki a kódból. vagy ezzel csak én vagyok így?

  • martonx
    veterán

    Köszi a tippeket! Majd csak kitanulom ...

    A vicc az, hogy mire kitanulod már mozdulhatsz is tovább a frissebb technológiák felé (wpf, asp.net, win8 metro).
    Szóval én a helyedben túl sok energiát nem fektetnék egy már 5 -10 évvel ezelőtt is elavult technológiába.

  • cigam
    titán

    na látod megy ez. ;) Bevallom olyan 2005 környéke óta a windows forms közelébe se mentem, így csak távoli ködös emlékképekből próbálok felidézni pár akkori tipikus hibámat, és azok megoldását.

    Köszi a tippeket! Majd csak kitanulom ...

  • martonx
    veterán

    Közben szintén a properties ablakban megtaláltam a keypreview-et, de már true-ra állítottam :)

    na látod megy ez. ;) Bevallom olyan 2005 környéke óta a windows forms közelébe se mentem, így csak távoli ködös emlékképekből próbálok felidézni pár akkori tipikus hibámat, és azok megoldását.

  • cigam
    titán

    a Form_Load részhez? :B
    1 hete ismerkedem a VB2010expressel, semmi nem evidencia.

    Viszont most megint átnéztem jobboldalt a properties ablakban a "Form1 System.Windows.Forms.Form" listájában a "KeyDown"-hoz tudtam társítani az "ido_KeyDown" szubrutint, és most működik!

    - A form load részt hol találom, és a program "melyik része" ez?
    - Ez a "Form1 System.Windows.Forms.Form" micsuda?

    Közben szintén a properties ablakban megtaláltam a keypreview-et, de már true-ra állítottam :)

  • cigam
    titán

    sziasztok!

    a következő problémám volna:
    teljesen elölről kezdtem a kis művemet, ezúttal külső adatbázisra hivatkozik és ez kellően meg is bonyolította számomra a dolgokat...

    így néz ki a kereső gomb click event:

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click

    'telefonszám szövegének formázása
    txtTelNumber.Text = ""
    txtTelNumber.Paste()
    txtTelNumber.Text = Replace(txtTelNumber.Text, " ", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "/", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "(", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, ")", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "-", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "+", "")

    If txtTelNumber.TextLength > 7 Then

    If txtTelNumber.Text.StartsWith("06") Then
    txtTelNumber.Text = txtTelNumber.Text.Substring(2)
    End If
    If txtTelNumber.Text.StartsWith("36") Then
    txtTelNumber.Text = txtTelNumber.Text.Substring(2)
    End If
    End If

    con.Open()
    sql = "SELECT [tel] from tel"
    da.Fill(ds, "tel")
    con.Close()

    For index = 0 To ds.Tables("tel").Rows.Count - 1
    Dim dt As DataTable
    dt = ds.Tables("tel")

    If txtTelNumber.Text = ds.Tables("tel").Rows(index).Item("tel") Then
    lbTelNum.Text = ds.Tables("tel").Rows(index).Item("tel")
    Else
    lbTelNum.Text = ""
    End If

    If lbTelNum.Text = "" Then
    lbTelNum.Text = ""
    lbExist.Text = ""
    Else
    Me.lbTelNum.Text = Me.lbTelNum.Text
    Me.lbExist.Text = "Már létezik!"
    End If
    Next
    End Sub

    a cél továbbra is az volna, hogy a textbox-ba beírt számot keresse meg az access táblában, majd ha megtalálja, azt jelezze.

    ez ugye most úgy néz ki, hogy ha a "txtTelNumber" mezőbe beírt szám benne van a táblában, annak értéke kerüljön át az "lbTelNum" mezőbe (és mellette az "lbExist" is írjon ki valamit) >> hogyha a "lbTelNum" üres, akkor egyszerűen nullázza ki ezt a két mezőt.

    a gyakorlatban ez működik is, de csak az első érték beadásakor....ha jól sejtem, az lehet a gond, hogy a következő kattintáskor már nem fut le a ciklus.
    próbáltam Else ágon újra beadni neki ugyanezt a ciklust, de csúnyán megakasztottam vele a gépet, úgyhogy valószínűnek tartom, hogy nem az lesz a megoldás... :D

    várom az ötleteket, véleményeket! :)

    _____________________________________________________

    szerk.:
    cigam!

    a Form_Load részhez írd be:
    KeyPreview = True

    a Form_Load részhez? :B
    1 hete ismerkedem a VB2010expressel, semmi nem evidencia.

    Viszont most megint átnéztem jobboldalt a properties ablakban a "Form1 System.Windows.Forms.Form" listájában a "KeyDown"-hoz tudtam társítani az "ido_KeyDown" szubrutint, és most működik!

    - A form load részt hol találom, és a program "melyik része" ez?
    - Ez a "Form1 System.Windows.Forms.Form" micsuda?

  • bepken
    veterán

    sziasztok!

    a következő problémám volna:
    teljesen elölről kezdtem a kis művemet, ezúttal külső adatbázisra hivatkozik és ez kellően meg is bonyolította számomra a dolgokat...

    így néz ki a kereső gomb click event:

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click

    'telefonszám szövegének formázása
    txtTelNumber.Text = ""
    txtTelNumber.Paste()
    txtTelNumber.Text = Replace(txtTelNumber.Text, " ", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "/", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "(", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, ")", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "-", "")
    txtTelNumber.Text = Replace(txtTelNumber.Text, "+", "")

    If txtTelNumber.TextLength > 7 Then

    If txtTelNumber.Text.StartsWith("06") Then
    txtTelNumber.Text = txtTelNumber.Text.Substring(2)
    End If
    If txtTelNumber.Text.StartsWith("36") Then
    txtTelNumber.Text = txtTelNumber.Text.Substring(2)
    End If
    End If

    con.Open()
    sql = "SELECT [tel] from tel"
    da.Fill(ds, "tel")
    con.Close()

    For index = 0 To ds.Tables("tel").Rows.Count - 1
    Dim dt As DataTable
    dt = ds.Tables("tel")

    If txtTelNumber.Text = ds.Tables("tel").Rows(index).Item("tel") Then
    lbTelNum.Text = ds.Tables("tel").Rows(index).Item("tel")
    Else
    lbTelNum.Text = ""
    End If

    If lbTelNum.Text = "" Then
    lbTelNum.Text = ""
    lbExist.Text = ""
    Else
    Me.lbTelNum.Text = Me.lbTelNum.Text
    Me.lbExist.Text = "Már létezik!"
    End If
    Next
    End Sub

    a cél továbbra is az volna, hogy a textbox-ba beírt számot keresse meg az access táblában, majd ha megtalálja, azt jelezze.

    ez ugye most úgy néz ki, hogy ha a "txtTelNumber" mezőbe beírt szám benne van a táblában, annak értéke kerüljön át az "lbTelNum" mezőbe (és mellette az "lbExist" is írjon ki valamit) >> hogyha a "lbTelNum" üres, akkor egyszerűen nullázza ki ezt a két mezőt.

    a gyakorlatban ez működik is, de csak az első érték beadásakor....ha jól sejtem, az lehet a gond, hogy a következő kattintáskor már nem fut le a ciklus.
    próbáltam Else ágon újra beadni neki ugyanezt a ciklust, de csúnyán megakasztottam vele a gépet, úgyhogy valószínűnek tartom, hogy nem az lesz a megoldás... :D

    várom az ötleteket, véleményeket! :)

    _____________________________________________________

    szerk.:
    cigam!

    a Form_Load részhez írd be:
    KeyPreview = True

  • cigam
    titán

    Mi nem működik benne? A formon beállítottad, hogy figyeljen a billentyű lenyomásokra?

    Hiába ütöm le az F1-et, nem indul el a stopper.
    A form billentyűfigyelését hol kell beállítani?

  • martonx
    veterán

    Csináltam egy stoppert. Azt szeretném, hogy billentyűzettel is lehessen vezérelni, de nem tudom hogyan. Amit találtam példakódot nem működik:

    Public Class Form1
    Dim perc As String = "00"
    Dim masodperc As String = "00"
    Dim idoszoveg As String = "00:00"

    Private Sub ido_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ido.KeyDown

    If e.KeyCode = Keys.F1 Then Timer1.Start()
    End Sub
    Private Sub startgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startgomb.Click
    Timer1.Start()
    End Sub

    Private Sub stopgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopgomb.Click
    Timer1.Stop()
    End Sub

    Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    masodperc += 1
    If masodperc = "60" Then
    masodperc = "0"
    perc += 1
    If perc < 10 Then perc = "0" & perc
    End If
    If masodperc < 10 Then masodperc = "0" & masodperc
    idoszoveg = perc & ":" & masodperc
    If perc = "100" Then
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    End If
    ido.Text = idoszoveg
    End Sub
    End Class

    Mi nem működik benne? A formon beállítottad, hogy figyeljen a billentyű lenyomásokra?

  • cigam
    titán

    Csináltam egy stoppert. Azt szeretném, hogy billentyűzettel is lehessen vezérelni, de nem tudom hogyan. Amit találtam példakódot nem működik:

    Public Class Form1
    Dim perc As String = "00"
    Dim masodperc As String = "00"
    Dim idoszoveg As String = "00:00"

    Private Sub ido_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ido.KeyDown

    If e.KeyCode = Keys.F1 Then Timer1.Start()
    End Sub
    Private Sub startgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startgomb.Click
    Timer1.Start()
    End Sub

    Private Sub stopgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stopgomb.Click
    Timer1.Stop()
    End Sub

    Private Sub resetgomb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles resetgomb.Click
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    ido.Text = idoszoveg
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    masodperc += 1
    If masodperc = "60" Then
    masodperc = "0"
    perc += 1
    If perc < 10 Then perc = "0" & perc
    End If
    If masodperc < 10 Then masodperc = "0" & masodperc
    idoszoveg = perc & ":" & masodperc
    If perc = "100" Then
    perc = "00"
    masodperc = "00"
    idoszoveg = "00:00"
    End If
    ido.Text = idoszoveg
    End Sub
    End Class

  • bepken
    veterán

    Regexp-el szebb és gyorsabb lenne, de így is jó. Csak ha már véleményt kértél.

    köszi! utánaolvasok majd, hogyan kell használni - mert gyorsan rákeresve nem igazán fogtam fel a lényegét :)

    igazából még két dolgot kellene megoldanom a teljes lelki-béke eléréséhez:
    1. az fent említett karakter felülírást (ezt szerintem meg fogom találni guglival)
    2. ha a keresett érték szerepel a csatolt adatbázisban, azt jelezze. - találtam olyan kódot, amivel elértem, hogy msgbox-ként felugorjon a "hibaüzenet", de nekem label-be lenne ideális (ne kelljen feleslegesen ok gombra kattintgatni)...és valamiért ez nem akar összejönni.

  • martonx
    veterán

    azt hiszem, a telefonszám "konvertálást" is sikerült megoldani, bár a gyakorlatban még csak pár példával próbálkoztam:

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click

    txtFind.Paste()
    txtFind.Text = Replace(txtFind.Text, " ", "")
    txtFind.Text = Replace(txtFind.Text, "/", "")
    txtFind.Text = Replace(txtFind.Text, "(", "")
    txtFind.Text = Replace(txtFind.Text, ")", "")
    txtFind.Text = Replace(txtFind.Text, "-", "")
    txtFind.Text = Replace(txtFind.Text, "+", "")

    If txtFind.TextLength > 7 Then

    If txtFind.Text.StartsWith("06") Then
    txtFind.Text = txtFind.Text.Substring(2)
    End If
    If txtFind.Text.StartsWith("36") Then
    txtFind.Text = txtFind.Text.Substring(2)
    End If

    End If

    TelBindingSource.Filter = "[tel] = '" & Me.txtFind.Text & " ' "
    End Sub

    így elviekben a vágólapra vett (legtöbbször keszekusza formátumú) számokat szépen "letisztítja" és ezután keres az adatbázisban

    mennyire elegáns ez így szerintetek?

    illetve arra nem jöttem még rá, hogyan lehetne megoldani, hogy a TextBox-ban található értéket minden alkalommal alapból felülírja.
    nem hozott megoldást az sem, ha beállítottam, hogy 7 karakter hosszú legyen a TextBox, mert ekkor alapból az első 7 karaktert kezdte vizsgálni, ami meg ugye esetemben nem igazán előnyös...

    Regexp-el szebb és gyorsabb lenne, de így is jó. Csak ha már véleményt kértél.

  • bepken
    veterán

    rendben, az egyik kipiálva:

    a Form1 tulajdonságainál >>"KeyPreview = True"

    majd:
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then
    Me.dataBindingSource.Filter = "[number] = '" & Me.txtFind.Text & " ' "
    End If

    a másik kérdésemre viszont egyelőre nem találtam megoldást...

    azt hiszem, a telefonszám "konvertálást" is sikerült megoldani, bár a gyakorlatban még csak pár példával próbálkoztam:

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click

    txtFind.Paste()
    txtFind.Text = Replace(txtFind.Text, " ", "")
    txtFind.Text = Replace(txtFind.Text, "/", "")
    txtFind.Text = Replace(txtFind.Text, "(", "")
    txtFind.Text = Replace(txtFind.Text, ")", "")
    txtFind.Text = Replace(txtFind.Text, "-", "")
    txtFind.Text = Replace(txtFind.Text, "+", "")

    If txtFind.TextLength > 7 Then

    If txtFind.Text.StartsWith("06") Then
    txtFind.Text = txtFind.Text.Substring(2)
    End If
    If txtFind.Text.StartsWith("36") Then
    txtFind.Text = txtFind.Text.Substring(2)
    End If

    End If

    TelBindingSource.Filter = "[tel] = '" & Me.txtFind.Text & " ' "
    End Sub

    így elviekben a vágólapra vett (legtöbbször keszekusza formátumú) számokat szépen "letisztítja" és ezután keres az adatbázisban

    mennyire elegáns ez így szerintetek?

    illetve arra nem jöttem még rá, hogyan lehetne megoldani, hogy a TextBox-ban található értéket minden alkalommal alapból felülírja.
    nem hozott megoldást az sem, ha beállítottam, hogy 7 karakter hosszú legyen a TextBox, mert ekkor alapból az első 7 karaktert kezdte vizsgálni, ami meg ugye esetemben nem igazán előnyös...

  • vilag
    tag

    Csak egy bajom van, az, hogy a Refereciákhoz hozzá kell adni a következőt:
    Microsoft Scripting Runtime

    Meg lehet valahogy oldani, hogy ez a hozzáadás programkódból történjen?

    Sajnos a makrórögzítés semmit nem vett fel.
    Fontos lenne, hogy ezt le tudjam vezérelni, mert a programot mások is használják, és hát nem hiszem, hogy mindenki el tudja végezni ezt a műveletet.

  • emitter
    őstag

    Office 2003-hoz tarozó VBA-ban használtam az "Application.FileSearch" funkciót, azonban az Office 2007-hez tartozó VBA-ban ilyen már nincs.

    Tudja esetleg valaki, hogy mi van helyette, mert eddig én nem találtam meg.

    Előre is köszönöm!

    remélem, itt találsz segítséget:
    [link]

  • vilag
    tag

    Office 2003-hoz tarozó VBA-ban használtam az "Application.FileSearch" funkciót, azonban az Office 2007-hez tartozó VBA-ban ilyen már nincs.

    Tudja esetleg valaki, hogy mi van helyette, mert eddig én nem találtam meg.

    Előre is köszönöm!

  • sztanozs
    veterán

    rendben, az egyik kipiálva:

    a Form1 tulajdonságainál >>"KeyPreview = True"

    majd:
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then
    Me.dataBindingSource.Filter = "[number] = '" & Me.txtFind.Text & " ' "
    End If

    a másik kérdésemre viszont egyelőre nem találtam megoldást...

    Az Enter esemény az nem az, amikor entert nyomsz.
    Azt így tudod megccsinálni, ahogy írtad. Esetleg még Validate-tel - de ott ha be van állítva, hogy validate on focus lost (vagy valami hasonló), akkor akkor is lefut a validate, ha kikantitasz a mezőből (vagy Tab-bal tovább mész).

  • bepken
    veterán

    akkor ismét lenne pár kérdésem:

    - hogy lehet azt megoldani, hogy a TextBox-ba beírt szövegre az enter billentyűt lenyomva is rá tudjak keresni? gondolom a TextBox-hoz kell hozzárendelni ezt:

    Private Sub txtFind_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFind.Enter

    End Sub

    valahogy így kell nekikezdeni? ha ide beírom ugyanazt a feltételt, amit a "Keres" gombnál működik, akkor sem akar összejönni valamiért...

    - a másik kérdésem pedig az volna, hogyan tudnám megoldani azt, hogy egy a vágólapra felvett számot adott formátumra "átalakítsa"?
    tehát mondjuk egy telefonszám esetében törölje a felesleges szóközöket vagy "/ - +" karaktereket

    rendben, az egyik kipiálva:

    a Form1 tulajdonságainál >>"KeyPreview = True"

    majd:
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    If Asc(e.KeyChar) = 13 Then
    Me.dataBindingSource.Filter = "[number] = '" & Me.txtFind.Text & " ' "
    End If

    a másik kérdésemre viszont egyelőre nem találtam megoldást...

  • bepken
    veterán

    akkor ismét lenne pár kérdésem:

    - hogy lehet azt megoldani, hogy a TextBox-ba beírt szövegre az enter billentyűt lenyomva is rá tudjak keresni? gondolom a TextBox-hoz kell hozzárendelni ezt:

    Private Sub txtFind_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFind.Enter

    End Sub

    valahogy így kell nekikezdeni? ha ide beírom ugyanazt a feltételt, amit a "Keres" gombnál működik, akkor sem akar összejönni valamiért...

    - a másik kérdésem pedig az volna, hogyan tudnám megoldani azt, hogy egy a vágólapra felvett számot adott formátumra "átalakítsa"?
    tehát mondjuk egy telefonszám esetében törölje a felesleges szóközöket vagy "/ - +" karaktereket

  • martonx
    veterán

    próbáltam kicsit egyszerűsíteni - saját magamnak - mivel ez az első vb program, amivel próbálkoznék :)
    más kezéből egem is irritál az ilyen "felemás" munka, úgyhogy átérzem az ellenszenvedet ;]

    valami ötlet esetleg a kérdésemre? :)

    Bocs, winforms, meg access adatbázist hál istennek már nagyon sok éve nem használtam.
    De ahogy olyan 2005 környékéről rémlik, eléggé faék egyszerűségű volt az access db-jét használni (kivéve 64 biten, nem tudom, hogy ez időközben változott-e).

  • bepken
    veterán

    hú ez az "azonFind" borzasztóan szúrja a szemem. Vagy legyen minden elnevezés angol, vagy legyen magyar, de ez a keverés, ez borzasztó.

    próbáltam kicsit egyszerűsíteni - saját magamnak - mivel ez az első vb program, amivel próbálkoznék :)
    más kezéből egem is irritál az ilyen "felemás" munka, úgyhogy átérzem az ellenszenvedet ;]

    valami ötlet esetleg a kérdésemre? :)

  • martonx
    veterán

    sziasztok!

    a sokadik kezdő kérdésem lesz, szóval bocsi azoktól, akik korábban már nem egyet megválaszoltak más topic-ban :D

    egy egyszerű programot szeretnék, ami tartalmaz:
    - egy access adatbázist
    - egy "azonFind" TextBox-ot, ahová beillesztve egy azonosító számot
    - egy "btnFind" gombot, mely segítségével a TextBox-ba beírt azonosítószámot tudom kikeresni
    - egy "btnSave" gombot, mellyel hozzá lehet adni az adott azonosítószámot, hogyha még nincs benne az adatbázisban

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Munka1TableAdapter.Fill(Me.AzonositoDataSet.Munka1)

    End Sub

    Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click
    Me.Munka1BindingSource.Filter = "[Azonosítószám] = '" & Me.azonFind.Text & " ' "

    End Sub

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Me.Validate()
    Me.Munka1BindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.AzonositoDataSet)
    End Sub
    End Class

    eddig meg is vagyok - bár valamiért az adatbázist nem mindig akarja módosítani..... :D

    na de ezekhez az azonosítószámokhoz az adatbázisban tartozik egy checkbox is!
    szeretném, ha a program ezek értékeinek megfelelően (true/false) meghatározott szöveget adna vissza.

    egyébként az ilyesmit Label segítségével szokás kiíratni? (tehát amikor nem MsgBox féle ablakot szeretnénk, hanem csak egy szöveg változót valahova)

    remélem nem kérdeztem sok hülyeséget... :D

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

    hú ez az "azonFind" borzasztóan szúrja a szemem. Vagy legyen minden elnevezés angol, vagy legyen magyar, de ez a keverés, ez borzasztó.

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