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

  • martonx
    veterán

    Mármint mi a probléma? Megcsinálsz mindent az első válasz alapján:
    1) Csinálsz egy classt (még a neve is oda van írva - TextBoxEventHandler)
    2) Belemásolod az újonnan készített class-ba az első adag kódot
    3) Belelépsz a formod kódszerkesztőjébe
    4) Belemásolod a második kódot (persze, ha volt már valami kitöltve a UserForm_Initialise-ben, akkor hozzácsapod az elejéhez/végéhez)
    5) A TextBoxEventHandlerclass kódszerkesztőjében a Private Sub m_oTextBox_Change() -et szerkeszted a kedved szerint...

    Hol akadtál egyáltalán el?

    mondjuk bennem is felmerült a kérdés, hogy vajon mi lehet az a probléma, amihez 40 commandbutton kell???

  • sztanozs
    veterán

    Köszi! Ebből sokat nem értek, de bocsánat, hogy meg mertem kérdezni... :(((

    martonx: Én is attól tartok az a megoldás marad, de találtam közben egy Funtion CallByName, talán ő lesz a nyerő. De még nem sikerült használnom.

    Mármint mi a probléma? Megcsinálsz mindent az első válasz alapján:
    1) Csinálsz egy classt (még a neve is oda van írva - TextBoxEventHandler)
    2) Belemásolod az újonnan készített class-ba az első adag kódot
    3) Belelépsz a formod kódszerkesztőjébe
    4) Belemásolod a második kódot (persze, ha volt már valami kitöltve a UserForm_Initialise-ben, akkor hozzácsapod az elejéhez/végéhez)
    5) A TextBoxEventHandlerclass kódszerkesztőjében a Private Sub m_oTextBox_Change() -et szerkeszted a kedved szerint...

    Hol akadtál egyáltalán el?

  • Bobrooney
    senior tag

    [link] (odaírjam, hogy google első?)

    Köszi! Ebből sokat nem értek, de bocsánat, hogy meg mertem kérdezni... :(((

    martonx: Én is attól tartok az a megoldás marad, de találtam közben egy Funtion CallByName, talán ő lesz a nyerő. De még nem sikerült használnom.

  • martonx
    veterán

    Sziasztok!

    Az lenne a kérdésem (VBA), hogy van kb 40 CommandButton-öm aminek a Click eseményét szeretném kezelni, lehet ezt valahogy ciklusban szervezni, vagy külön külön kell megírni mindet?

    Köszönöm előre is a válaszokat!

    Nem tudom mit szeretnél, de a külön megírást javaslom. Excel VBA-ja nagyon buta.
    Ha cél, hogy bármelyik gomb megnyomására ugyanaz történjen, akkor programozottan talán meg tudod adni, hogy mindnek ugyanaz legyen az eseménye.

  • sztanozs
    veterán

    Sziasztok!

    Az lenne a kérdésem (VBA), hogy van kb 40 CommandButton-öm aminek a Click eseményét szeretném kezelni, lehet ezt valahogy ciklusban szervezni, vagy külön külön kell megírni mindet?

    Köszönöm előre is a válaszokat!

    [link] (odaírjam, hogy google első?)

  • Bobrooney
    senior tag

    Sziasztok!

    Az lenne a kérdésem (VBA), hogy van kb 40 CommandButton-öm aminek a Click eseményét szeretném kezelni, lehet ezt valahogy ciklusban szervezni, vagy külön külön kell megírni mindet?

    Köszönöm előre is a válaszokat!

  • vilag
    tag

    Dim r As Range
    With Worksheets(munkalapneve)
    Set r = .Range(.Cells(kezdosor, kezdooszlop), .Cells(utolsosor, utolsooszlop))
    End With
    ComboBox1.RowSource = r.Address

    Üdv!

    Köszönöm a segítséget!
    Holnap remélem eljutok odáig, hogy kis is tudom próbálni működik e a dolog, mert ma nemigen jut/jutott rá időm.

    vilag

  • sztanozs
    veterán

    Oszlopszámmal azt hogyan lehet megcsinálni, mert én már próbáltam néhányféleképpen.

    Esetleg tudnád egy példával illusztrálni?

    Üdv, vilag

    Dim r As Range
    With Worksheets(munkalapneve)
    Set r = .Range(.Cells(kezdosor, kezdooszlop), .Cells(utolsosor, utolsooszlop))
    End With
    ComboBox1.RowSource = r.Address

  • vilag
    tag

    Ahogy nézem a RowSource Range-et vár. Range-et pedig össze tudsz rakni kódból, úgy ahogy szeretnéd.

    Oszlopszámmal azt hogyan lehet megcsinálni, mert én már próbáltam néhányféleképpen.

    Esetleg tudnád egy példával illusztrálni?

    Üdv, vilag

  • martonx
    veterán

    Üdv!

    Lenne egy olyan kérdésem, hogy valamely vezérlő RowSource-át be lehet e állítani úgy, hogy nem cella neveket adok meg hanem oszlop és sorszámokat?

    Pl.: Combobox1.RowSource = "napló!a2:b5" helyett "napló!xy:xy", ahol x=oszlopszám és y=sorszám

    Azért lenne szükséges, hogy ha esetleg a forrástáblába be akarok szúrni egy oszlopot vagy bővíteni akarom a sorok számát, akkor ne kelljen az egyes vezérlők tulajdonságait folyton kézzel áligatni.

    Az már megvan, hogy a kívánt oszlop fejlécét megkeresve az adott táblában kinyerem az oszlop sorszámát az
    Application.Worksheetfunction.Match-el.
    Vagy olyan megoldás is érdekel, amelyben a keresés eredményeként nem oszlopszámot hanem oszlonevet kapok vissza.
    Ez talán még jobb volna.

    Lehetséges?
    Ha igen, akkor hogyan?

    Köszönöm!

    Üdv, vilag

    Ahogy nézem a RowSource Range-et vár. Range-et pedig össze tudsz rakni kódból, úgy ahogy szeretnéd.

  • vilag
    tag

    Üdv!

    Lenne egy olyan kérdésem, hogy valamely vezérlő RowSource-át be lehet e állítani úgy, hogy nem cella neveket adok meg hanem oszlop és sorszámokat?

    Pl.: Combobox1.RowSource = "napló!a2:b5" helyett "napló!xy:xy", ahol x=oszlopszám és y=sorszám

    Azért lenne szükséges, hogy ha esetleg a forrástáblába be akarok szúrni egy oszlopot vagy bővíteni akarom a sorok számát, akkor ne kelljen az egyes vezérlők tulajdonságait folyton kézzel áligatni.

    Az már megvan, hogy a kívánt oszlop fejlécét megkeresve az adott táblában kinyerem az oszlop sorszámát az
    Application.Worksheetfunction.Match-el.
    Vagy olyan megoldás is érdekel, amelyben a keresés eredményeként nem oszlopszámot hanem oszlonevet kapok vissza.
    Ez talán még jobb volna.

    Lehetséges?
    Ha igen, akkor hogyan?

    Köszönöm!

    Üdv, vilag

  • sztanozs
    veterán

    Ne tartsd magadban! ;]

    1) leszeded a jelszót a vba projektről
    2) bekapcsolod a debug módot
    3) kézzel végignyálazod a kódot (és legalább a konstansokat visszaváltoztatod fix értékekre)

  • Lengyi
    aktív tag

    Semmi sem lehetetlen, kérdés hogy megéri-e a befektetett pár évnyi processzoridőt a visszafejtés? ;]

    Ne tartsd magadban! ;]

  • martonx
    veterán

    Üdv
    Hátha találkozott már valamelyikőtök hasonlóval. Adott egy dokumentum, mely az alábbi módszerrel van védve. A kérdésem az lenne, hogy van e rá esély, hogy esetleg visszanyerjem vagy ez lehetetlen? Előre is köszönöm!

    Semmi sem lehetetlen, kérdés hogy megéri-e a befektetett pár évnyi processzoridőt a visszafejtés? ;]

  • Lengyi
    aktív tag

    Üdv
    Hátha találkozott már valamelyikőtök hasonlóval. Adott egy dokumentum, mely az alábbi módszerrel van védve. A kérdésem az lenne, hogy van e rá esély, hogy esetleg visszanyerjem vagy ez lehetetlen? Előre is köszönöm!

  • DerStauner
    senior tag

    Sziasztok!

    Két kérdésem lenne:

    1. Csináltam egy egyedi combobox-ot. Minden jól működik, egyet kivéve: ha legördítem a combobox-ot, és úgy döntök, hogy nem választok ki semmit, hanem félrekattintok, akkor azt szeretném elérni, hogy tűnjön el a legördülő rész, úgy, mint a szokványos combobox-nál. Kép mellékelve. Próbáltam a lostfocus event-et felülírni, de nem jártam sikerrel. Nem is lép be a lostfocus-ba, csak akkor, miután már választottam egy item-et, bezárult a legördülő lista, és úgy lépek el.

    2. Ha a combobox legördülő része túllóg a saját container-e határán, akkor a maradék már nem látszik. Hiába írtam neki, hogy bringtofront. Kép mellékelve.

  • martonx
    veterán

    Kedves Fórumozók!

    A segítségetekre lenn szükségem.
    Visual Basicben fejlesztgetek egy iskolai szoftvert és kicsit megakadtam.
    A program lényege a következő:
    Egy Access adatbázisban lévő adatokat (diákok adatait: név osztály lakcim stb..) dolgozza fel.

    Ezeket az adatokat szűrni szeretném.
    Azt szeretném, hogy a felhasználó tudja hozzáadni a feltételeket.

    Tehát, ha úgy szeretnék szűrni, hogy kollégista lányok a 12. osztályból, akkor legyen egy "Feltétel hozzáadása" gomb és ki tudom választani:
    - Osztály: 12
    - Lány: Igen
    - Internátus: Igen

    (Csináltam olyan szűrést, hogy minden adatot beraktam és a programon belül a textbox-okba be lehet írni a feltételeket, viszont ha üres a mező akkor megborul a rendszer..)

    Ötleteiteket előre köszönöm!

    "Csináltam olyan szűrést, hogy minden adatot beraktam és a programon belül a textbox-okba be lehet írni a feltételeket, viszont ha üres a mező akkor megborul a rendszer.."

    Ez így kiindulásnak nem rossz. Arra figyelj oda, hogy a feltételeidben kezeld le az üres textbox-ot is, mondjuk valahogy így (szintaktikailag lehet hibás a példám):

    where
    (mezo1 = textbox1.text or textbox1.text = '')
    and (mezo2 = textbox2.text or textbox2.text = '')
    stb...

  • kotapeter
    csendes tag

    Kedves Fórumozók!

    A segítségetekre lenn szükségem.
    Visual Basicben fejlesztgetek egy iskolai szoftvert és kicsit megakadtam.
    A program lényege a következő:
    Egy Access adatbázisban lévő adatokat (diákok adatait: név osztály lakcim stb..) dolgozza fel.

    Ezeket az adatokat szűrni szeretném.
    Azt szeretném, hogy a felhasználó tudja hozzáadni a feltételeket.

    Tehát, ha úgy szeretnék szűrni, hogy kollégista lányok a 12. osztályból, akkor legyen egy "Feltétel hozzáadása" gomb és ki tudom választani:
    - Osztály: 12
    - Lány: Igen
    - Internátus: Igen

    (Csináltam olyan szűrést, hogy minden adatot beraktam és a programon belül a textbox-okba be lehet írni a feltételeket, viszont ha üres a mező akkor megborul a rendszer..)

    Ötleteiteket előre köszönöm!

  • TIKI3
    csendes tag

    sziasztok. Visual basic 6ban programozunk, és olyan kérdésem lenne h ha van egy szöveges fájlom és abban számok vannak sortöréssel elválasztva, akkor ezt h tudnám egy tömbe beolvasni ? Előre is köszönöm.

  • Speeedfire
    félisten

    Szóközzel próbálj meg rövid pathnevet, avgy rakj az elejére és a végére dupla macskakörmöt:
    """c:\elérési útvonal\fájl.exe"""

    Ezt a dupla macskakörmöt megpróbálom majd. :R
    Egyelőre a parancsikonnal tökéletes. :)

  • sztanozs
    veterán

    Átírtam call-ra, most elfogadja a zárójelet, ellenben még mindig azt írja, hogy a fájl nem található. Ilyenkor mi van? Csináljak valahova egy parancsikont róla és azt linkeljem be neki? :F
    Ahol nincs szóköz a mappa nevében, azt simán elindítja.

    Szóközzel próbálj meg rövid pathnevet, avgy rakj az elejére és a végére dupla macskakörmöt:
    """c:\elérési útvonal\fájl.exe"""

  • Speeedfire
    félisten

    Azért, mert ha zárójelbe rakod, akkor nem statementként működik, hanme function-ként, tehát vagy meghívni kell (asszem call-lal), vagy át kell adni a visszatérési értéket valaminek.

    Átírtam call-ra, most elfogadja a zárójelet, ellenben még mindig azt írja, hogy a fájl nem található. Ilyenkor mi van? Csináljak valahova egy parancsikont róla és azt linkeljem be neki? :F
    Ahol nincs szóköz a mappa nevében, azt simán elindítja.

  • sztanozs
    veterán

    Kérdésem az lenne, hogy itt a 3. sorra miért dob nekem errort? A fájl létezik pedig. :F
    Ha meg zárójelbe rakom a paramétereket a run-nál, akkor hibát dob.

    WScript.Sleep 180000
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "C:\Program Files\wamp\wampmanager.exe",0,True
    WScript.Sleep 120000
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "C:\Users\Speeedfire\AppData\Roaming\Dropbox\bin\Dropbox.exe",0,True
    WScript.Sleep 300000
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "C:\Users\Speeedfire\AppData\Local\Microsoft\SkyDrive\SkyDrive.exe",0,True

    Azért, mert ha zárójelbe rakod, akkor nem statementként működik, hanme function-ként, tehát vagy meghívni kell (asszem call-lal), vagy át kell adni a visszatérési értéket valaminek.

  • Speeedfire
    félisten

    Kérdésem az lenne, hogy itt a 3. sorra miért dob nekem errort? A fájl létezik pedig. :F
    Ha meg zárójelbe rakom a paramétereket a run-nál, akkor hibát dob.

    WScript.Sleep 180000
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "C:\Program Files\wamp\wampmanager.exe",0,True
    WScript.Sleep 120000
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "C:\Users\Speeedfire\AppData\Roaming\Dropbox\bin\Dropbox.exe",0,True
    WScript.Sleep 300000
    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run "C:\Users\Speeedfire\AppData\Local\Microsoft\SkyDrive\SkyDrive.exe",0,True

  • martonx
    veterán

    "Az access oledb-je ráadásul 64 bites környezetben nem is működik"

    erre a projekt elején sajnos rá kellett jönnöm. de kiküszöbölhető volt.

    "office is kell, hogy legyen a gépen"

    ezt nem tudtam 100%-osan, nem elég csak a jet?

    már nem is emlékszem, melyikkel, vagy az sql ce-vel, vagy az sqlite-tal már annak idején kísérletezgettem, amikor a témát kóstolgattam.

    egyre emlékszem: rohadt lassú volt.

    Én mindhármat használtam, igaz minden esetben csak tényleg minimális adatmennyiséget (néhány tucat sor) tároltam bennük. Ennyiből én nem láttam sebesség különbséget köztük.

  • DerStauner
    senior tag

    nem, de ott van például az SQL CE vagy az SQLite. Az access oledb-je ráadásul 64 bites környezetben nem is működik, office is kell, hogy legyen a gépen. Bármilyen kicsi is a projekt SQL CE-t (vagy sqlite-ot) érdemes használni, az access-t pedig tökéletesen mellőzni kellene.

    "Az access oledb-je ráadásul 64 bites környezetben nem is működik"

    erre a projekt elején sajnos rá kellett jönnöm. de kiküszöbölhető volt.

    "office is kell, hogy legyen a gépen"

    ezt nem tudtam 100%-osan, nem elég csak a jet?

    már nem is emlékszem, melyikkel, vagy az sql ce-vel, vagy az sqlite-tal már annak idején kísérletezgettem, amikor a témát kóstolgattam.

    egyre emlékszem: rohadt lassú volt.

  • martonx
    veterán

    igen, ezt tudom, de erre a kis projektre nem érdemes egy normális db-t alkalmazni
    egy postgresql-t elég nehéz belenyomni egy setup-ba, úgy, hogy click-click-re tökéletesen felmenjen
    mert ha fel is megy, ezer gondja lehet, hogy miért nem kapcsolódik a program a szerverhez

    nem, de ott van például az SQL CE vagy az SQLite. Az access oledb-je ráadásul 64 bites környezetben nem is működik, office is kell, hogy legyen a gépen. Bármilyen kicsi is a projekt SQL CE-t (vagy sqlite-ot) érdemes használni, az access-t pedig tökéletesen mellőzni kellene.

  • DerStauner
    senior tag

    hát igen, az access az egy külön világ. Mondjuk éppen ezért nem kellene access-t használni külső DB-ként. Arra az access-nél csak jobbak vannak.

    igen, ezt tudom, de erre a kis projektre nem érdemes egy normális db-t alkalmazni
    egy postgresql-t elég nehéz belenyomni egy setup-ba, úgy, hogy click-click-re tökéletesen felmenjen
    mert ha fel is megy, ezer gondja lehet, hogy miért nem kapcsolódik a program a szerverhez

  • martonx
    veterán

    hát ezért:

    Instead of SQLClient has OleDB (what you call Access) no named parameters.

    They are used in the order (sequence) they appear. Therefore you see often in sample code the question mark (?) used.

    inkább összefűzögetem őket.

    nem a legszebb, de hát ez van.

    hát igen, az access az egy külön világ. Mondjuk éppen ezért nem kellene access-t használni külső DB-ként. Arra az access-nél csak jobbak vannak.

  • DerStauner
    senior tag

    de pont erre használom a paramétereket

    pl. acces_cmb.parameters.addwithvalue("@tulaj1",txtulaj1.text)

    és akkor simán írhatom, hogy .... where tulaj1=@tulaj1

    ez mindenhol működött eddig. úgy látszik, az access egy külön dió?

    EDIT: ha felcserélem a knev és a hrsz paraméteradási sorokat, akkor meg a hrsz működik úgy, ahogy kell, a knev pedig nem.

    miért??

    hát ezért:

    Instead of SQLClient has OleDB (what you call Access) no named parameters.

    They are used in the order (sequence) they appear. Therefore you see often in sample code the question mark (?) used.

    inkább összefűzögetem őket.

    nem a legszebb, de hát ez van.

  • DerStauner
    senior tag

    ez olyan hosszú volt hogy el se olvastam, de látatlanban egy nagyon hülye tanács. Nem lehet, hogy a string-et nem tetted '-ok közé? Azaz where mező = valami helyett where mező = 'valami'-t kellene használni.
    Nagyon gagyi ötlet, de nem ez lehet a gond?

    de pont erre használom a paramétereket

    pl. acces_cmb.parameters.addwithvalue("@tulaj1",txtulaj1.text)

    és akkor simán írhatom, hogy .... where tulaj1=@tulaj1

    ez mindenhol működött eddig. úgy látszik, az access egy külön dió?

    EDIT: ha felcserélem a knev és a hrsz paraméteradási sorokat, akkor meg a hrsz működik úgy, ahogy kell, a knev pedig nem.

    miért??

  • martonx
    veterán

    a bolondját járatja velem az access. Vagy valamit nagyon benézek.

    csak a knev-re hajlandó működni a where feltétel

    még egy sima egyszerű stringre sem. Pedig a paraméterek értékei helyesek.

    pl van az adatbázisban egy sor, ahol a tulaj1=valaki

    ha csak ezt írom be a tulaj mezőbe, nem hoz ki semmit sem.

    Miért van ez???

    ez olyan hosszú volt hogy el se olvastam, de látatlanban egy nagyon hülye tanács. Nem lehet, hogy a string-et nem tetted '-ok közé? Azaz where mező = valami helyett where mező = 'valami'-t kellene használni.
    Nagyon gagyi ötlet, de nem ez lehet a gond?

  • DerStauner
    senior tag

    sziasztok!

    alant a kód:

    ConnectToDb(acces_conn)
    acces_cmd.Connection = acces_conn
    acces_cmd.Parameters.Clear()
    acces_cmd.Parameters.AddWithValue("@knev", frmkereses.inp_knev.szoveg.Replace("*", "%"))
    acces_cmd.Parameters.AddWithValue("@hrsz", frmkereses.inp_hrsz.szoveg.Replace("*", "%"))
    If frmkereses.inp_terulet.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@terulet", CInt(frmkereses.inp_terulet.szoveg))
    If frmkereses.tb_teruletig.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@teruletig", CInt(frmkereses.tb_teruletig.szoveg))
    If frmkereses.inp_erdo.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@erdoter", CInt(frmkereses.inp_erdo.szoveg))
    If frmkereses.tb_erdoig.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@erdoig", CInt(frmkereses.tb_erdoig.szoveg))
    acces_cmd.Parameters.AddWithValue("@kivett", frmkereses.cmb_kivett.selecteditem)
    acces_cmd.Parameters.AddWithValue("@jogallas", frmkereses.cmb_jogallas.selecteditem)
    acces_cmd.Parameters.AddWithValue("@tulaj1", frmkereses.inp_tulaj.szoveg)
    acces_cmd.Parameters.AddWithValue("@tulaj2", frmkereses.tb_tulaj2.szoveg)
    acces_cmd.Parameters.AddWithValue("@tulaj3", frmkereses.tb_tulaj3.szoveg)
    acces_cmd.Parameters.AddWithValue("@erdo", frmkereses.j_erdo.Checked)
    Dim selstring As String = ""
    acces_cmd.CommandText = "select * from fotabla where id>=0"
    If frmkereses.inp_knev.szoveg <> "" Then selstring = selstring & " and knev like @knev"
    If frmkereses.inp_hrsz.szoveg <> "" Then selstring = selstring & " and hrsz like @hrsz"
    If frmkereses.inp_terulet.szoveg <> "" And frmkereses.tb_teruletig.szoveg = "" Then selstring = selstring & " and terulet>=@terulet"
    If frmkereses.inp_terulet.szoveg = "" And frmkereses.tb_teruletig.szoveg <> "" Then selstring = selstring & " and terulet<=@teruletig"
    If frmkereses.inp_terulet.szoveg <> "" And frmkereses.tb_teruletig.szoveg <> "" Then selstring = selstring & " and terulet between @terulet and @teruletig"
    If frmkereses.inp_erdo.szoveg <> "" And frmkereses.tb_erdoig.szoveg = "" Then selstring = selstring & " and erdo>=@erdo"
    If frmkereses.inp_erdo.szoveg = "" And frmkereses.tb_erdoig.szoveg <> "" Then selstring = selstring & " and erdo<=@erdoig"
    If frmkereses.inp_erdo.szoveg <> "" And frmkereses.tb_erdoig.szoveg <> "" Then selstring = selstring & " and terulet between @erdo and @erdoig"
    acces_cmd.CommandText = acces_cmd.CommandText & selstring & " order by id"
    'acces_cmd.CommandText = "select * from fotabla where id>=0 and terulet>4000 order by id"
    'MsgBox(acces_cmd.CommandText)
    'DisplaySPInformation(acces_cmd)
    'lekérdezési tábla előkészítése
    acces_reader = acces_cmd.ExecuteReader

    Az a gondom vele, hogy amikor a lekérdezést végrehajtatom (csak a terület értéket adom meg), azt írja ki, hogy típuseltérési hiba a feltételkifejezésben.

    Az adatbázisban a terület mező egész, itt pedig a paraméter típusa is egész. Tehát mindennek jónak kellene lennie. Mégsem az. Miért??

    Adatbázisként acces-t használok (most kivételesen csak a projekt kedvééért - felesleges lenne a postgresql).

    a bolondját járatja velem az access. Vagy valamit nagyon benézek.

    csak a knev-re hajlandó működni a where feltétel

    még egy sima egyszerű stringre sem. Pedig a paraméterek értékei helyesek.

    pl van az adatbázisban egy sor, ahol a tulaj1=valaki

    ha csak ezt írom be a tulaj mezőbe, nem hoz ki semmit sem.

    Miért van ez???

  • DerStauner
    senior tag

    sziasztok!

    alant a kód:

    ConnectToDb(acces_conn)
    acces_cmd.Connection = acces_conn
    acces_cmd.Parameters.Clear()
    acces_cmd.Parameters.AddWithValue("@knev", frmkereses.inp_knev.szoveg.Replace("*", "%"))
    acces_cmd.Parameters.AddWithValue("@hrsz", frmkereses.inp_hrsz.szoveg.Replace("*", "%"))
    If frmkereses.inp_terulet.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@terulet", CInt(frmkereses.inp_terulet.szoveg))
    If frmkereses.tb_teruletig.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@teruletig", CInt(frmkereses.tb_teruletig.szoveg))
    If frmkereses.inp_erdo.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@erdoter", CInt(frmkereses.inp_erdo.szoveg))
    If frmkereses.tb_erdoig.szoveg <> "" Then acces_cmd.Parameters.AddWithValue("@erdoig", CInt(frmkereses.tb_erdoig.szoveg))
    acces_cmd.Parameters.AddWithValue("@kivett", frmkereses.cmb_kivett.selecteditem)
    acces_cmd.Parameters.AddWithValue("@jogallas", frmkereses.cmb_jogallas.selecteditem)
    acces_cmd.Parameters.AddWithValue("@tulaj1", frmkereses.inp_tulaj.szoveg)
    acces_cmd.Parameters.AddWithValue("@tulaj2", frmkereses.tb_tulaj2.szoveg)
    acces_cmd.Parameters.AddWithValue("@tulaj3", frmkereses.tb_tulaj3.szoveg)
    acces_cmd.Parameters.AddWithValue("@erdo", frmkereses.j_erdo.Checked)
    Dim selstring As String = ""
    acces_cmd.CommandText = "select * from fotabla where id>=0"
    If frmkereses.inp_knev.szoveg <> "" Then selstring = selstring & " and knev like @knev"
    If frmkereses.inp_hrsz.szoveg <> "" Then selstring = selstring & " and hrsz like @hrsz"
    If frmkereses.inp_terulet.szoveg <> "" And frmkereses.tb_teruletig.szoveg = "" Then selstring = selstring & " and terulet>=@terulet"
    If frmkereses.inp_terulet.szoveg = "" And frmkereses.tb_teruletig.szoveg <> "" Then selstring = selstring & " and terulet<=@teruletig"
    If frmkereses.inp_terulet.szoveg <> "" And frmkereses.tb_teruletig.szoveg <> "" Then selstring = selstring & " and terulet between @terulet and @teruletig"
    If frmkereses.inp_erdo.szoveg <> "" And frmkereses.tb_erdoig.szoveg = "" Then selstring = selstring & " and erdo>=@erdo"
    If frmkereses.inp_erdo.szoveg = "" And frmkereses.tb_erdoig.szoveg <> "" Then selstring = selstring & " and erdo<=@erdoig"
    If frmkereses.inp_erdo.szoveg <> "" And frmkereses.tb_erdoig.szoveg <> "" Then selstring = selstring & " and terulet between @erdo and @erdoig"
    acces_cmd.CommandText = acces_cmd.CommandText & selstring & " order by id"
    'acces_cmd.CommandText = "select * from fotabla where id>=0 and terulet>4000 order by id"
    'MsgBox(acces_cmd.CommandText)
    'DisplaySPInformation(acces_cmd)
    'lekérdezési tábla előkészítése
    acces_reader = acces_cmd.ExecuteReader

    Az a gondom vele, hogy amikor a lekérdezést végrehajtatom (csak a terület értéket adom meg), azt írja ki, hogy típuseltérési hiba a feltételkifejezésben.

    Az adatbázisban a terület mező egész, itt pedig a paraméter típusa is egész. Tehát mindennek jónak kellene lennie. Mégsem az. Miért??

    Adatbázisként acces-t használok (most kivételesen csak a projekt kedvééért - felesleges lenne a postgresql).

  • martonx
    veterán

    "tutorialokat, példákat, különösen az újabb technológiákhoz szinte lehetetlen hozzá találni."

    erre jó a sok ingyenes online converter

    én soha nem tudtam megbékélni a c# szintaxisával, máig is vb.net-tel nyomulok (anno vb6-tal kezdtem)

    akkor adj be egy speciálisabb RIA Services LINQ-t, vagy az online konverternek, és nézd meg, hogy mit fog vele kezdeni.
    Az online konverterek addig jók, amig a console.writeline sor végéről le kell szedni a pontosvesszőt ;]
    Mint mondtam nekem is a VB.Net a kedvencem, de már évek óta nem igazán használtam, pont az újabb technológiák nehézkes VB.Net támogatása miatt.

  • DerStauner
    senior tag

    Én már régóta .Net vonalon kizárólag C#-ozok. Makróról .Net-re áttérésre legjobb a VB.Net viszont rá fogsz jönni, hogy mostanra szinte senki nem használja a VB.Net-et, ergo tutorialokat, példákat, különösen az újabb technológiákhoz szinte lehetetlen hozzá találni.
    Nekem személyes kedvencem a VB.Net, és mind tudásban, mind sebességben egyenrangú a C#-al. Csak valahogy az élet így hozta, hogy mostanra a C# dominál.

    "tutorialokat, példákat, különösen az újabb technológiákhoz szinte lehetetlen hozzá találni."

    erre jó a sok ingyenes online converter

    én soha nem tudtam megbékélni a c# szintaxisával, máig is vb.net-tel nyomulok (anno vb6-tal kezdtem)

  • martonx
    veterán

    Ajánlották még a CSharpot is.

    Arról mi a véleményed, illetve mi a lényegi különbség közöttük?

    Én már régóta .Net vonalon kizárólag C#-ozok. Makróról .Net-re áttérésre legjobb a VB.Net viszont rá fogsz jönni, hogy mostanra szinte senki nem használja a VB.Net-et, ergo tutorialokat, példákat, különösen az újabb technológiákhoz szinte lehetetlen hozzá találni.
    Nekem személyes kedvencem a VB.Net, és mind tudásban, mind sebességben egyenrangú a C#-al. Csak valahogy az élet így hozta, hogy mostanra a C# dominál.

  • vilag
    tag

    Igen, megértél :)
    VB scriptek után .Net-et javaslom továbblépésre. Talán elsőre winforms a legideálisabb továbblépni, de nehogy itt leragadj, mert a végső cél nem lehet más, mint az ASP.NET (MVC).

    Ajánlották még a CSharpot is.

    Arról mi a véleményed, illetve mi a lényegi különbség közöttük?

  • martonx
    veterán

    Üdv!

    Azt mondod megérettem a továbblépésre?

    Mégis milyen fejlesztői környezetet javasolnál?

    Üdv, vilag

    Igen, megértél :)
    VB scriptek után .Net-et javaslom továbblépésre. Talán elsőre winforms a legideálisabb továbblépni, de nehogy itt leragadj, mert a végső cél nem lehet más, mint az ASP.NET (MVC).

  • vilag
    tag

    Nem ez a baj. Neked már réges régen tovább kellett volna lépned az excel makróról, bármilyen normális fejlesztői környezet felé.
    Mi lesz a következő, amit excel makróban akarsz csinálni? Directx-es játékprogram? ;]

    Üdv!

    Azt mondod megérettem a továbblépésre?

    Mégis milyen fejlesztői környezetet javasolnál?

    Üdv, vilag

  • martonx
    veterán

    Csupán érdekelnek (legalább is számomra) új megoldások.
    Nem tudom ez miért baj?

    Nem ez a baj. Neked már réges régen tovább kellett volna lépned az excel makróról, bármilyen normális fejlesztői környezet felé.
    Mi lesz a következő, amit excel makróban akarsz csinálni? Directx-es játékprogram? ;]

  • vilag
    tag

    Úristen, ez a dolog kezd végtelenül elbutulni ;]

    Csupán érdekelnek (legalább is számomra) új megoldások.
    Nem tudom ez miért baj?

  • martonx
    veterán

    Ez lett a végső (nek tűnő) megoldás:

    For Each twb In Application.Workbooks
    wbnev = twb.Name
    If wbnev <> "PERSONAL.XLS" And wbnev <> ThisWorkbook.Name Then
    GoTo bezar
    End If
    Next

    kilep:
    Application.Quit
    GoTo vege
    bezar:
    Application.DisplayAlerts = False
    Unload Me
    ThisWorkbook.Close

    vege:
    Application.WindowState = xlMaximized

    Jelenleg úgy tűnik, hogy minden gond nélkül működik. mondom ezt néhány teszt után.
    Remélem most már így is marad.

    Van azonban egy másik kérdésem:
    A szóban forgó project le van jelszavazva a basicben azon oknál fogva, hogy a mezei felhasználó ne tévedhessen debug módba.
    Van a felhasználói felületen egy gomb aminek a jelentősége most megnőtt (eddig nem is használtam). Ez a gomb arra szolgál, hogy a userformot bezárja és megnyissa a basicet.

    A probléma az lenne, hogy a project kibontásához jelszót kér (mivel ugye lejelszavaztam).

    Szóval a kérdés az, hogy lehet e automatizálni a pojecthez tartozó jelszóbeadást?

    Természetesen a userformon lévő gomb jelszavazva van.

    Üdv, vilag

    Úristen, ez a dolog kezd végtelenül elbutulni ;]

  • vilag
    tag

    Mármint megnyitva?
    A telepített / elérhető AddInek az Application.AddIns collectionben vannak nyilvántartva. For Each-vel végigmész rajtuk, és megnézed, hogy a tiéd nyitva van-e (property-k, amik kellhetnek: Name, Installed, IsOpen).
    Public Function SajatfuggvenyekBetolve()
    Dim A1 As AddIn
    For Each A1 In Application.AddIns
    If (A1.Name = "sajatfuggvenyek.xla") And A1.IsOpen And A1.Installed Then
    SajatfuggvenyekBetolve = True
    Exit Function
    Next
    SajatfuggvenyekBetolve = False
    End Function

    A megnyitott workbookok pedig az Application.Workbooks collectionben vannak. Megnézni ugyanúgy tudod:
    Public Function PersonalBetolve()
    Dim W1 As Workbook
    For Each W1 In Application.Workbooks

    If W1.Name = "personal.xls" Then
    PersonalBetolve = True
    Exit Function
    Next
    PersonalBetolve = False
    End Function

    Ez lett a végső (nek tűnő) megoldás:

    For Each twb In Application.Workbooks
    wbnev = twb.Name
    If wbnev <> "PERSONAL.XLS" And wbnev <> ThisWorkbook.Name Then
    GoTo bezar
    End If
    Next

    kilep:
    Application.Quit
    GoTo vege
    bezar:
    Application.DisplayAlerts = False
    Unload Me
    ThisWorkbook.Close

    vege:
    Application.WindowState = xlMaximized

    Jelenleg úgy tűnik, hogy minden gond nélkül működik. mondom ezt néhány teszt után.
    Remélem most már így is marad.

    Van azonban egy másik kérdésem:
    A szóban forgó project le van jelszavazva a basicben azon oknál fogva, hogy a mezei felhasználó ne tévedhessen debug módba.
    Van a felhasználói felületen egy gomb aminek a jelentősége most megnőtt (eddig nem is használtam). Ez a gomb arra szolgál, hogy a userformot bezárja és megnyissa a basicet.

    A probléma az lenne, hogy a project kibontásához jelszót kér (mivel ugye lejelszavaztam).

    Szóval a kérdés az, hogy lehet e automatizálni a pojecthez tartozó jelszóbeadást?

    Természetesen a userformon lévő gomb jelszavazva van.

    Üdv, vilag

  • sztanozs
    veterán

    Üdv!

    Felmerült még egy probléma.

    Az a baj, hogy nem tudom, hogy a felhasználók közül ki az akinek van personal.xls és esetleg rendelkezik az általunk írt sajatfuggvenyek.xla-val.
    Ebből kifolyólag sajnos nem tudom előre meghatározni, hogy melyik az ominózus munkafüzetszám amihez viszonyítani tudnám, hogy van e még nyitva munkafüzet vagy sem.

    Tudunk esetleg beépíteni valami erre vonatkozó vizsgálatot?
    Esetleg vizsgáljuk meg, hogy megnyitáskor mennyi munkafüzet van nyitva és azt vegyük bázisértéknek?
    Bár lehet, hogy ez sem jó, mert még így sem tudjuk megmondani, hogy az valóban egy látható munkafüzet e vagy az előbb említett kettő valamelyike...

    Próbáljunk meg esetleg ezekre a munkafüzet nevekre keresni és kivonni a számukat a bázisszámból?
    Valami ötlet esetleg?

    Üdv, vilag

    Mármint megnyitva?
    A telepített / elérhető AddInek az Application.AddIns collectionben vannak nyilvántartva. For Each-vel végigmész rajtuk, és megnézed, hogy a tiéd nyitva van-e (property-k, amik kellhetnek: Name, Installed, IsOpen).
    Public Function SajatfuggvenyekBetolve()
    Dim A1 As AddIn
    For Each A1 In Application.AddIns
    If (A1.Name = "sajatfuggvenyek.xla") And A1.IsOpen And A1.Installed Then
    SajatfuggvenyekBetolve = True
    Exit Function
    Next
    SajatfuggvenyekBetolve = False
    End Function

    A megnyitott workbookok pedig az Application.Workbooks collectionben vannak. Megnézni ugyanúgy tudod:
    Public Function PersonalBetolve()
    Dim W1 As Workbook
    For Each W1 In Application.Workbooks

    If W1.Name = "personal.xls" Then
    PersonalBetolve = True
    Exit Function
    Next
    PersonalBetolve = False
    End Function

  • vilag
    tag

    Saját funkciókat, és menüket menüket tedd XLA-ba, ne XLS-be.

    Üdv!

    Felmerült még egy probléma.

    Az a baj, hogy nem tudom, hogy a felhasználók közül ki az akinek van personal.xls és esetleg rendelkezik az általunk írt sajatfuggvenyek.xla-val.
    Ebből kifolyólag sajnos nem tudom előre meghatározni, hogy melyik az ominózus munkafüzetszám amihez viszonyítani tudnám, hogy van e még nyitva munkafüzet vagy sem.

    Tudunk esetleg beépíteni valami erre vonatkozó vizsgálatot?
    Esetleg vizsgáljuk meg, hogy megnyitáskor mennyi munkafüzet van nyitva és azt vegyük bázisértéknek?
    Bár lehet, hogy ez sem jó, mert még így sem tudjuk megmondani, hogy az valóban egy látható munkafüzet e vagy az előbb említett kettő valamelyike...

    Próbáljunk meg esetleg ezekre a munkafüzet nevekre keresni és kivonni a számukat a bázisszámból?
    Valami ötlet esetleg?

    Üdv, vilag

  • sztanozs
    veterán

    Üdv!

    Kicsit utánaolvastam az Option Explicit-nek, mert megmondom őszintén nem is hallottam róla.
    A meglévő kevéske tudásomat a kollégámtól, innen, általánosságban az internetről, illetve saját kútfőböl szereztem. Vélhetően ezért nem hallottam róla.

    Szóval utánaolvastam, és szerintem nem fogom bekapcsolni (legalább is ebben a programban tuti nem), mert rövidke a program és a tárgyalt kódon kívül mindössze egy változó van, így igazán nincs is értelme.

    Meg rosszat is olvastam (1 hsz):
    [link]

    Bár nem olvastam végig, így könnyen lehet, hogy nem is ez okozta a problémát.

    Üdv, vilag

    Szerk: Annyit azonban észrevettem, hogy a fenti módon megoldott kilépéssel előállta az a helyzet, hogy a personal.xls-t is bezárja, így a kipakolt saját menük, illetve beállítások elszállnak.
    Ezt nem lehet valahogyan elkerülni????

    Saját funkciókat, és menüket menüket tedd XLA-ba, ne XLS-be.

  • vilag
    tag

    Dim-eket ne hagyd ki és tedd ki az összes modul elejére az Option Explicit-et (megköveteli az összes változó deklarálását), és akkor nem lesznek esetleges elütésből eredő problémáid sem.

    Üdv!

    Kicsit utánaolvastam az Option Explicit-nek, mert megmondom őszintén nem is hallottam róla.
    A meglévő kevéske tudásomat a kollégámtól, innen, általánosságban az internetről, illetve saját kútfőböl szereztem. Vélhetően ezért nem hallottam róla.

    Szóval utánaolvastam, és szerintem nem fogom bekapcsolni (legalább is ebben a programban tuti nem), mert rövidke a program és a tárgyalt kódon kívül mindössze egy változó van, így igazán nincs is értelme.

    Meg rosszat is olvastam (1 hsz):
    [link]

    Bár nem olvastam végig, így könnyen lehet, hogy nem is ez okozta a problémát.

    Üdv, vilag

    Szerk: Annyit azonban észrevettem, hogy a fenti módon megoldott kilépéssel előállta az a helyzet, hogy a personal.xls-t is bezárja, így a kipakolt saját menük, illetve beállítások elszállnak.
    Ezt nem lehet valahogyan elkerülni????

  • sztanozs
    veterán

    Végül is eddig úgy tűnik, hogy a következő verziónál maradok:

    Workbook:
    Private Sub Workbook_Open()

    UserForm1.Show

    End Sub

    Userform:

    Private Sub CommandButton2_Click() 'Kilépés gomb

    mfszam = 0 'mfszam=munkafüzetek száma
    For Each twb In Application.Workbooks
    mfszam = mfszam + 1
    Next
    If mfszam = 0 Then
    Application.Quit
    Else
    Application.DisplayAlerts = False
    Unload Me
    ThisWorkbook.Close
    Application.DisplayAlerts = True
    End If
    Application.WindowState = xlNormal

    End Sub

    Private Sub UserForm_Terminate()

    Application.DisplayAlerts = True
    Application.WindowState = xlNormal

    End Sub

    Ez lett a végleges (legalább is most annak tűnő) megoldás.
    Még betettem egy Unload Me-t, mert így lefut a lejjebbi részben írt Terminate is, amivel el tudom érni, hogy a hibajelzést visszakapcsoljam, illetve, hogy újra nagy méretű legyen a megnyitva maradt munkafüzet (már persze ha több volt nyitva). Ha csak egy volt nyitva az sem gond, mert felugrik és aztán bezáródik az egész.

    A dim-eket kihagytam, mert anélkül is megy, illetve a változó nevét megváltoztattam, mert nekem így beszédesebb :)

    Üdv, vilag

    Dim-eket ne hagyd ki és tedd ki az összes modul elejére az Option Explicit-et (megköveteli az összes változó deklarálását), és akkor nem lesznek esetleges elütésből eredő problémáid sem.

  • vilag
    tag

    ThisWorkbook az igazi. Nem kell hackelni a lokális változóval - csak nem jutott az eszembe... :)

    Végül is eddig úgy tűnik, hogy a következő verziónál maradok:

    Workbook:
    Private Sub Workbook_Open()

    UserForm1.Show

    End Sub

    Userform:

    Private Sub CommandButton2_Click() 'Kilépés gomb

    mfszam = 0 'mfszam=munkafüzetek száma
    For Each twb In Application.Workbooks
    mfszam = mfszam + 1
    Next
    If mfszam = 0 Then
    Application.Quit
    Else
    Application.DisplayAlerts = False
    Unload Me
    ThisWorkbook.Close
    Application.DisplayAlerts = True
    End If
    Application.WindowState = xlNormal

    End Sub

    Private Sub UserForm_Terminate()

    Application.DisplayAlerts = True
    Application.WindowState = xlNormal

    End Sub

    Ez lett a végleges (legalább is most annak tűnő) megoldás.
    Még betettem egy Unload Me-t, mert így lefut a lejjebbi részben írt Terminate is, amivel el tudom érni, hogy a hibajelzést visszakapcsoljam, illetve, hogy újra nagy méretű legyen a megnyitva maradt munkafüzet (már persze ha több volt nyitva). Ha csak egy volt nyitva az sem gond, mert felugrik és aztán bezáródik az egész.

    A dim-eket kihagytam, mert anélkül is megy, illetve a változó nevét megváltoztattam, mert nekem így beszédesebb :)

    Üdv, vilag

  • sztanozs
    veterán

    A wb a Form1 egy lokális változója, amit inicializáláskor töltesz fel, ahogy - szintén ugyanabban a hszban - írtam is:
    Kód - Workbook:
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Set UserForm1.wb = Me
    UserForm1.Show
    End Sub

    Kód - Form:
    Public wb As Object

    wcount=0-ra:
    Addin-moódba teszed végül a workbook-ot? Akkor tényleg nem jelenik meg a workbook-ok között.

    ThisWorkbook az igazi. Nem kell hackelni a lokális változóval - csak nem jutott az eszembe... :)

  • sztanozs
    veterán

    Üdv!

    Csináltam magamnak egy kis időt és megnéztem a több munkafüzetes megoldást is.

    A megoldás működik...csak fordítva :)

    Igazából azt írtad, hogy ha csak egy munkafüzet van nyitva, akkor csak a munkafüzetet zárja be, és ha több akkor pedig az egész programot :)

    De a problémát megoldottam.
    A hiba a következő volt:

    Private Sub CommandButton1_Click()
    Dim wcount As Integer
    Dim twb As Workbook
    wcount = 0
    For Each twb In Application.Workbooks
    wcount = wcount + 1
    Next
    If wcount = 1 Then helyette 0 kell
    Application.Quit
    Else
    Application.DisplayAlerts = False
    wb.Close False
    End If
    End Sub

    Valamint a wb.Close -ra hibát dob, így azt átírtam twb-re (de így sem működött), így átírtam ThisWorkbook-ra.
    Meg annyi, hogy én ez után a hibajelzést újra true-ra állítottam, hogy a nyitva maradt munkafüzetekben működjön. Bár lehet, hogy ez csak adott munkafüzetre vonatkozik.
    Az igazat megvallva ezt nem tudom.

    Mindent egybevéve, nagyon köszönöm a segítséget, most több programomba is beépítem a megoldást.

    Üdv, vilag

    A wb a Form1 egy lokális változója, amit inicializáláskor töltesz fel, ahogy - szintén ugyanabban a hszban - írtam is:
    Kód - Workbook:
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Set UserForm1.wb = Me
    UserForm1.Show
    End Sub

    Kód - Form:
    Public wb As Object

    wcount=0-ra:
    Addin-moódba teszed végül a workbook-ot? Akkor tényleg nem jelenik meg a workbook-ok között.

  • vilag
    tag

    Form properties:
    Show Modal - False
    Window Position - Center Screen

    Több Workbookra - csak a formosat zárja be:
    Kód - Workbook:
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Set UserForm1.wb = Me
    UserForm1.Show
    End Sub

    Kód - Form:
    Public wb As Object

    Private Sub CommandButton1_Click()
    Dim wcount As Integer
    Dim twb As Workbook
    wcount = 0
    For Each twb In Application.Workbooks
    wcount = wcount + 1
    Next
    If wcount = 1 Then
    Application.Quit
    Else
    Application.DisplayAlerts = False
    wb.Close False
    End If
    End Sub

    Üdv!

    Csináltam magamnak egy kis időt és megnéztem a több munkafüzetes megoldást is.

    A megoldás működik...csak fordítva :)

    Igazából azt írtad, hogy ha csak egy munkafüzet van nyitva, akkor csak a munkafüzetet zárja be, és ha több akkor pedig az egész programot :)

    De a problémát megoldottam.
    A hiba a következő volt:

    Private Sub CommandButton1_Click()
    Dim wcount As Integer
    Dim twb As Workbook
    wcount = 0
    For Each twb In Application.Workbooks
    wcount = wcount + 1
    Next
    If wcount = 1 Then helyette 0 kell
    Application.Quit
    Else
    Application.DisplayAlerts = False
    wb.Close False
    End If
    End Sub

    Valamint a wb.Close -ra hibát dob, így azt átírtam twb-re (de így sem működött), így átírtam ThisWorkbook-ra.
    Meg annyi, hogy én ez után a hibajelzést újra true-ra állítottam, hogy a nyitva maradt munkafüzetekben működjön. Bár lehet, hogy ez csak adott munkafüzetre vonatkozik.
    Az igazat megvallva ezt nem tudom.

    Mindent egybevéve, nagyon köszönöm a segítséget, most több programomba is beépítem a megoldást.

    Üdv, vilag

  • PumpkinSeed
    addikt

    Van valami kötelező olvasmány ami segít egy kezdőnek? Mit ajánlotok? Most kezdett érdekelni ez a téma. :))

  • sztanozs
    veterán

    Hali!

    Az ötleted sokat segített a modul tekintetében.
    a Show Modal = False az jó volt, de Window Position tulajdonsága nincs a userformnak.

    Végül is úgy sikerült megoldani, hogy ötvöztem az általad javasoltat a saját ötlettel, azaz a Show Modal-t Falsra állítottam, illetve a userform initializáláshoz beírtam ezt:
    Application.WindowState = xlMinimized

    A kettő együtt végül is azt csinálja amit szerettem volna :)

    A több Workbook-ra kínált megoldással még nem volt időm foglalatoskodni, mert a másik sürgősebb.

    Azzal igazából azt szeretném megoldani, hogy amikor a userformon megnyomom a kilépés gombot, akkor megvizsgálja, hogy van e nyitva másik munkafüzet is vagy sem. Ekkor kettéválna a folyamat:
    1. Az eredmény az, hogy nincs nyitva másik munkafüzet -> zárja be az egész excelt
    2. Az eredmény az, hogy van nyitva másik munkafüzet -> csak ezt a munkafüzetet zárja be.

    A két különböző bezárást le tudom vezérelni, igazából a vizsgálatot nem tudtam megoldani.

    Remélem az általad vázoltal meg tudom majd oldani.

    Üdv, vilag

    A hozzászólásomban a CommandButton1_Click() metódus pont azt csinálja, amit szeretnél...

  • vilag
    tag

    Form properties:
    Show Modal - False
    Window Position - Center Screen

    Több Workbookra - csak a formosat zárja be:
    Kód - Workbook:
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Set UserForm1.wb = Me
    UserForm1.Show
    End Sub

    Kód - Form:
    Public wb As Object

    Private Sub CommandButton1_Click()
    Dim wcount As Integer
    Dim twb As Workbook
    wcount = 0
    For Each twb In Application.Workbooks
    wcount = wcount + 1
    Next
    If wcount = 1 Then
    Application.Quit
    Else
    Application.DisplayAlerts = False
    wb.Close False
    End If
    End Sub

    Hali!

    Az ötleted sokat segített a modul tekintetében.
    a Show Modal = False az jó volt, de Window Position tulajdonsága nincs a userformnak.

    Végül is úgy sikerült megoldani, hogy ötvöztem az általad javasoltat a saját ötlettel, azaz a Show Modal-t Falsra állítottam, illetve a userform initializáláshoz beírtam ezt:
    Application.WindowState = xlMinimized

    A kettő együtt végül is azt csinálja amit szerettem volna :)

    A több Workbook-ra kínált megoldással még nem volt időm foglalatoskodni, mert a másik sürgősebb.

    Azzal igazából azt szeretném megoldani, hogy amikor a userformon megnyomom a kilépés gombot, akkor megvizsgálja, hogy van e nyitva másik munkafüzet is vagy sem. Ekkor kettéválna a folyamat:
    1. Az eredmény az, hogy nincs nyitva másik munkafüzet -> zárja be az egész excelt
    2. Az eredmény az, hogy van nyitva másik munkafüzet -> csak ezt a munkafüzetet zárja be.

    A két különböző bezárást le tudom vezérelni, igazából a vizsgálatot nem tudtam megoldani.

    Remélem az általad vázoltal meg tudom majd oldani.

    Üdv, vilag

  • dkaro
    őstag

    Ja - és ahogy mondani szoktuk - nem ártana debogolni... Sok kérdést meg lehet vele spórolni:
    0. Megoldás
    1) azon a soron, ahol megáll, megnézed a változók értékét...

    1. megoldás
    1) Problémás sorra rámész
    2) F9 vagy sor elé (szürke sávra) kattintasz - Breakpoint
    3) még egyszer futtatod a kódot és megnézed, mi a sorban található változók értéke - a problémák nagy része a helytelenül használt / inicializált változókból adódik.

    2. megoldás
    1) Problémás sor elé beszúrsz egy sort:
    On Error Resume Next
    2) Problémás sor után beszúrod az alábbiakat:
    If Err Then
    MsgBox Err & vbCrLf & Err.Description
    Err.Clear
    End If
    On Error Goto 0

    Szia!
    Köszönöm a segítséget és a tippeket!
    Tényleg az utolsó karakter volt a hiba.
    Levágtam és lefut rendesen.
    Köszi!

  • sztanozs
    veterán

    Amúgy vsz amiatt csinál(hat)ja, mert a tömb utolsó eleme üres:
    3 printert kiválsztva
    strComputer tartalma ez lesz: cn=printer1%cn=printer2%cn=printer3%
    az ebből generált tomb pedig ez:
    (
    "cn=printer1",
    "cn=printer2",
    "cn=printer3",
    ""
    )

    Szóval nem ártana levágni az strComputer utolsó karakterét :)

    Ja - és ahogy mondani szoktuk - nem ártana debogolni... Sok kérdést meg lehet vele spórolni:
    0. Megoldás
    1) azon a soron, ahol megáll, megnézed a változók értékét...

    1. megoldás
    1) Problémás sorra rámész
    2) F9 vagy sor elé (szürke sávra) kattintasz - Breakpoint
    3) még egyszer futtatod a kódot és megnézed, mi a sorban található változók értéke - a problémák nagy része a helytelenül használt / inicializált változókból adódik.

    2. megoldás
    1) Problémás sor elé beszúrsz egy sort:
    On Error Resume Next
    2) Problémás sor után beszúrod az alábbiakat:
    If Err Then
    MsgBox Err & vbCrLf & Err.Description
    Err.Clear
    End If
    On Error Goto 0

  • sztanozs
    veterán

    A tomb(j)-ben rendesen van formázva a nyomtató neve?
    GetObject("LDAP://srv/" & tomb(j) & ",ou=Printers,ou=SZE,dc=domain,dc=local")
    a "rendesen" alatt a cn=csoportnév formát értem.

    Kódbeillesztésre ezt*
    //kód
    dim valami as Variant
    valami = 1
    // még kód
    dim masvalami as Variant
    masvalami = valami

    * Kattintható kódok és arcocskák, második sor, első gomb: [Programkód]

    Amúgy vsz amiatt csinál(hat)ja, mert a tömb utolsó eleme üres:
    3 printert kiválsztva
    strComputer tartalma ez lesz: cn=printer1%cn=printer2%cn=printer3%
    az ebből generált tomb pedig ez:
    (
    "cn=printer1",
    "cn=printer2",
    "cn=printer3",
    ""
    )

    Szóval nem ártana levágni az strComputer utolsó karakterét :)

  • sztanozs
    veterán

    srv a szerver neve.
    Mit értesz kódbeillesztésen?

    A tomb(j)-ben rendesen van formázva a nyomtató neve?
    GetObject("LDAP://srv/" & tomb(j) & ",ou=Printers,ou=SZE,dc=domain,dc=local")
    a "rendesen" alatt a cn=csoportnév formát értem.

    Kódbeillesztésre ezt*
    //kód
    dim valami as Variant
    valami = 1
    // még kód
    dim masvalami as Variant
    masvalami = valami

    * Kattintható kódok és arcocskák, második sor, első gomb: [Programkód]

  • dkaro
    őstag

    Az srv helyére illendő volna beilleszteni az AD szerver nevét (vagy kihagyni és rögtön az ldap path definíciót írni)... Ja és használj kód beillesztést.

    srv a szerver neve.
    Mit értesz kódbeillesztésen?

  • sztanozs
    veterán

    Szia!
    A GetObject sorra dobja a hibát(első karakter).

    Az srv helyére illendő volna beilleszteni az AD szerver nevét (vagy kihagyni és rögtön az ldap path definíciót írni)... Ja és használj kód beillesztést.

  • dkaro
    őstag

    debug mit mutat? Melyik sornál van a hiba?
    Másrészt, ha végeredményben megcsinálja a script amit kell, a hibaüzenetet egy On Error Resume Next-el meg lehet kerülni.

    Szia!
    A GetObject sorra dobja a hibát(első karakter).

  • martonx
    veterán

    Köszönöm a segítséget így nyert.
    Most újabb hibánál akadtam el:
    Sub RunScript
    For i = 0 to (nyomtato.Options.Length - 1)
    If (nyomtato.Options(i).Selected) Then
    strComputer = strComputer & nyomtato.Options(i).Value & "%"
    End If
    Next
    Dim tomb
    Dim objGroup
    Const ADS_PROPERTY_APPEND = 3
    tomb = Split(strComputer,"%")
    For j = 0 To (UBound(tomb))
    Set objGroup = GetObject("LDAP://srv/"&tomb(j)&",ou=Printers,ou=SZE,dc=domain,dc=local")
    objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array("cn=user,ou=SZE,dc=domain,dc=local")
    objGroup.SetInfo
    next
    End Sub

    Ez a script azt lenne hivatott csinálni, hogy a multiple selectben kiválasztott csoportokba berakja a user.
    Sajnos 80005000-es hibaüzenetet kapok. Ettől függetlenül bekerül a user az összeskijelölt csoportba de a hibaüzenet zavar.
    Természetesen rendszergazdaként futtatom a scriptet.
    Köszönöm!

    debug mit mutat? Melyik sornál van a hiba?
    Másrészt, ha végeredményben megcsinálja a script amit kell, a hibaüzenetet egy On Error Resume Next-el meg lehet kerülni.

  • dkaro
    őstag

    Sub RunScript
    For i = 0 to (ertek.Options.Length - 1)
    If (ertek.Options(i).Selected) Then
    strComputer = strComputer & ertek.Options(i).Value & vbcrlf
    End If
    Next
    Msgbox strComputer
    End Sub

    Köszönöm a segítséget így nyert.
    Most újabb hibánál akadtam el:
    Sub RunScript
    For i = 0 to (nyomtato.Options.Length - 1)
    If (nyomtato.Options(i).Selected) Then
    strComputer = strComputer & nyomtato.Options(i).Value & "%"
    End If
    Next
    Dim tomb
    Dim objGroup
    Const ADS_PROPERTY_APPEND = 3
    tomb = Split(strComputer,"%")
    For j = 0 To (UBound(tomb))
    Set objGroup = GetObject("LDAP://srv/"&tomb(j)&",ou=Printers,ou=SZE,dc=domain,dc=local")
    objGroup.PutEx ADS_PROPERTY_APPEND, "member", Array("cn=user,ou=SZE,dc=domain,dc=local")
    objGroup.SetInfo
    next
    End Sub

    Ez a script azt lenne hivatott csinálni, hogy a multiple selectben kiválasztott csoportokba berakja a user.
    Sajnos 80005000-es hibaüzenetet kapok. Ettől függetlenül bekerül a user az összeskijelölt csoportba de a hibaüzenet zavar.
    Természetesen rendszergazdaként futtatom a scriptet.
    Köszönöm!

  • sztanozs
    veterán

    Igazából csak annyit szeretnék elérni, hogy az excel megnyitása után azonnal csakis a userform látszódjon. Se a munkalap, se pedig az üres excel ablak ne látszódjon, csak és kizárólag a userform.

    A táblába jelen esetben semmiféle kivétel-visszaírás nem történik!
    Gyakorlatilag kódból fut minden.
    Az egész csak annyit csinál, hogy gombnyomásra kiválasztott fájlt/fájlokat bizonyos helyre másol. Kilépéskori mentésre semmi szükség.
    Rendben, valamint egy kilépés gomb.

    --------------------

    A több munkafüzetes problémára esetleg valami megoldás?

    Üdv, vilag

    Form properties:
    Show Modal - False
    Window Position - Center Screen

    Több Workbookra - csak a formosat zárja be:
    Kód - Workbook:
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Set UserForm1.wb = Me
    UserForm1.Show
    End Sub

    Kód - Form:
    Public wb As Object

    Private Sub CommandButton1_Click()
    Dim wcount As Integer
    Dim twb As Workbook
    wcount = 0
    For Each twb In Application.Workbooks
    wcount = wcount + 1
    Next
    If wcount = 1 Then
    Application.Quit
    Else
    Application.DisplayAlerts = False
    wb.Close False
    End If
    End Sub

  • vilag
    tag

    Egyrészt, ha Excel Addint csinálsz, akkor nem látszik a worksheet, de tud futni kód.
    Másrészt el tudod takni kicsibe (minimized) a worksheetet, de így is látható marad (és megszünteti a többi ablak "Maximized" állapotát
    Harmadrészt megnyitás után is át tudod rakni Add-in típusba, viszpnt úgy nem fogod tudni menteni a save gombbal, csak formról.

    Add-in-be átrakni megnyitáskor:
    Private Sub Workbook_Open()
    Me.IsAddin = True
    End Sub

    Mentést viszont kézzel kell csinálnod, mert addin típusú excel-t nem lehet xls/xlsm-be menteni, csak xla-ba. Így mentés előtt kézzel ki kell szedni az Addin property-t (ami láthatóvá teszi a sheet-et - de jól lekódolva csak a mentés idejére).

    ThisWorkbook:
    Private Sub Workbook_Open()
    Me.IsAddin = True
    Set UserForm1.App = Me
    UserForm1.Show False
    End Sub

    Public Sub WB_Save()
    Me.IsAddin = False
    Me.Save
    Me.IsAddin = True
    End Sub

    UserForm:
    Public App As Object

    Private Sub CommandButton1_Click()
    App.WB_Save
    End Sub

    Igazából csak annyit szeretnék elérni, hogy az excel megnyitása után azonnal csakis a userform látszódjon. Se a munkalap, se pedig az üres excel ablak ne látszódjon, csak és kizárólag a userform.

    A táblába jelen esetben semmiféle kivétel-visszaírás nem történik!
    Gyakorlatilag kódból fut minden.
    Az egész csak annyit csinál, hogy gombnyomásra kiválasztott fájlt/fájlokat bizonyos helyre másol. Kilépéskori mentésre semmi szükség.
    Rendben, valamint egy kilépés gomb.

    --------------------

    A több munkafüzetes problémára esetleg valami megoldás?

    Üdv, vilag

  • sztanozs
    veterán

    Sziasztok!

    Egy újabb problémával találtam szemben magamat.

    A probléma az lenne, hogy egy excel dokumentumot úgy akarok megnyitni, hogy egyből a userform jelenjen meg, viszont (mivel ez nem túl nagy) a háttérben maga az extel tábla ne is látszódjon.

    A googliban kutakodva meg is találtam amire szükségem van, de sajnos nem egészen úgy történik minden ahogyan én szeretném.

    Már több megoldással is próbálkoztam de eddig csak félsikert értem el mindegyikkel.
    1.

    Private Sub Workbook_Open()

    Application.WindowState = xlMinimized
    UserForm1.Show

    End Sub

    Ebben az esetben a munkafüzet megnyitásakor az valóban a tálcára kerül, viszont a userform-al együtt.

    2.

    Private Sub CommandButton1_Click()

    Application.WindowState = xlMinimized
    UserForm1.Show

    End Sub

    Ellenben ha egy úgy van megcsinálva, hogy a munkafüzetben van egy gomb, amihez ugyan ez a kód van beírva, akkor a gombnyomásra úgy működik ahogyan kell.
    Csak ugye pont ezt szeretném elkerülni, mert semmi szükség még egy felesleges gombnyomásra.

    -----------------
    Próbáltam már magából a userform initializálásból megcsinálni, de az eredmény ugyan az mint a 2. esetben.
    Próbáltam már a userform initializálásból meghívni a kattintást, de az nem tetszett neki.
    Próbáltam már az első programkódot megcserélni, azaz előbb nyitni a userformot aztán minimalizálni, de ekkor nem történik semmi.
    Próbáltam már az első verzió után valahogyan aktiválni a munkafüzetet, de ez sem sikerült.

    Van esetleg valakinek valami használható megoldása?

    ------------------

    Lenne még egy olyan kérdésem, hogy valahogyan ki lehet e nyerni, hogy az altív munkafüzeten kívül van e még nyitva másiki munkafüzet?
    Kérdezem ezt azért, mert mondjuk egy kilépés gombnál akkor le tudnám vezérelni, hogy csak az aktív munkafüzetet zárja e be, vagy az egész excelt.
    Így elkerülhető lenne, hogy a felhasználónál nyitva lévő (és esetleg mentetlen) más munkafüzetet is bezárjak. (Az application.displayalerts direkt falsra van állítva).

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

    Egyrészt, ha Excel Addint csinálsz, akkor nem látszik a worksheet, de tud futni kód.
    Másrészt el tudod takni kicsibe (minimized) a worksheetet, de így is látható marad (és megszünteti a többi ablak "Maximized" állapotát
    Harmadrészt megnyitás után is át tudod rakni Add-in típusba, viszpnt úgy nem fogod tudni menteni a save gombbal, csak formról.

    Add-in-be átrakni megnyitáskor:
    Private Sub Workbook_Open()
    Me.IsAddin = True
    End Sub

    Mentést viszont kézzel kell csinálnod, mert addin típusú excel-t nem lehet xls/xlsm-be menteni, csak xla-ba. Így mentés előtt kézzel ki kell szedni az Addin property-t (ami láthatóvá teszi a sheet-et - de jól lekódolva csak a mentés idejére).

    ThisWorkbook:
    Private Sub Workbook_Open()
    Me.IsAddin = True
    Set UserForm1.App = Me
    UserForm1.Show False
    End Sub

    Public Sub WB_Save()
    Me.IsAddin = False
    Me.Save
    Me.IsAddin = True
    End Sub

    UserForm:
    Public App As Object

    Private Sub CommandButton1_Click()
    App.WB_Save
    End Sub

  • vilag
    tag

    Sziasztok!

    Egy újabb problémával találtam szemben magamat.

    A probléma az lenne, hogy egy excel dokumentumot úgy akarok megnyitni, hogy egyből a userform jelenjen meg, viszont (mivel ez nem túl nagy) a háttérben maga az extel tábla ne is látszódjon.

    A googliban kutakodva meg is találtam amire szükségem van, de sajnos nem egészen úgy történik minden ahogyan én szeretném.

    Már több megoldással is próbálkoztam de eddig csak félsikert értem el mindegyikkel.
    1.

    Private Sub Workbook_Open()

    Application.WindowState = xlMinimized
    UserForm1.Show

    End Sub

    Ebben az esetben a munkafüzet megnyitásakor az valóban a tálcára kerül, viszont a userform-al együtt.

    2.

    Private Sub CommandButton1_Click()

    Application.WindowState = xlMinimized
    UserForm1.Show

    End Sub

    Ellenben ha egy úgy van megcsinálva, hogy a munkafüzetben van egy gomb, amihez ugyan ez a kód van beírva, akkor a gombnyomásra úgy működik ahogyan kell.
    Csak ugye pont ezt szeretném elkerülni, mert semmi szükség még egy felesleges gombnyomásra.

    -----------------
    Próbáltam már magából a userform initializálásból megcsinálni, de az eredmény ugyan az mint a 2. esetben.
    Próbáltam már a userform initializálásból meghívni a kattintást, de az nem tetszett neki.
    Próbáltam már az első programkódot megcserélni, azaz előbb nyitni a userformot aztán minimalizálni, de ekkor nem történik semmi.
    Próbáltam már az első verzió után valahogyan aktiválni a munkafüzetet, de ez sem sikerült.

    Van esetleg valakinek valami használható megoldása?

    ------------------

    Lenne még egy olyan kérdésem, hogy valahogyan ki lehet e nyerni, hogy az altív munkafüzeten kívül van e még nyitva másiki munkafüzet?
    Kérdezem ezt azért, mert mondjuk egy kilépés gombnál akkor le tudnám vezérelni, hogy csak az aktív munkafüzetet zárja e be, vagy az egész excelt.
    Így elkerülhető lenne, hogy a felhasználónál nyitva lévő (és esetleg mentetlen) más munkafüzetet is bezárjak. (Az application.displayalerts direkt falsra van állítva).

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

  • sztanozs
    veterán

    helló!

    a social msdn-n eddig nem kaptam választ a kérdésemre, ezért itt is feltenném:

    hogyan tudok egy datagridview cellához egy picturebox-ot hozzáadni? nem imagecell-re van szükségem, hanem egy textbox cell-re, aminek a jobb sarkában van egy picturebox. és ami fontos, hogy mindig látható legyen, tehát edit mode-ban is. egy custom column-t szeretnék létre hozni. ez lenne az első lépés (picturebox hozzáadása a cell-hez). de a neten nem találok semmit. a microsoft host control-os példáját próbáltam, nem az kell nekem.

    tudjátok, minden control-nak van Controls tömbje, és akkor írhatom, hogy Controls.Add(picturebox). de úgy néz ki, hogy a cell-nek nincs.

    Esetleg ha a cell teljes Paint-jét te valósítod meg...

  • martonx
    veterán

    helló!

    a social msdn-n eddig nem kaptam választ a kérdésemre, ezért itt is feltenném:

    hogyan tudok egy datagridview cellához egy picturebox-ot hozzáadni? nem imagecell-re van szükségem, hanem egy textbox cell-re, aminek a jobb sarkában van egy picturebox. és ami fontos, hogy mindig látható legyen, tehát edit mode-ban is. egy custom column-t szeretnék létre hozni. ez lenne az első lépés (picturebox hozzáadása a cell-hez). de a neten nem találok semmit. a microsoft host control-os példáját próbáltam, nem az kell nekem.

    tudjátok, minden control-nak van Controls tömbje, és akkor írhatom, hogy Controls.Add(picturebox). de úgy néz ki, hogy a cell-nek nincs.

    Ez most winforms, wpf, silverlight, vagy asp.net? Winforms-al nem hiszem, hogy tudnál valaha is ilyet csinálni.

  • DerStauner
    senior tag

    helló!

    a social msdn-n eddig nem kaptam választ a kérdésemre, ezért itt is feltenném:

    hogyan tudok egy datagridview cellához egy picturebox-ot hozzáadni? nem imagecell-re van szükségem, hanem egy textbox cell-re, aminek a jobb sarkában van egy picturebox. és ami fontos, hogy mindig látható legyen, tehát edit mode-ban is. egy custom column-t szeretnék létre hozni. ez lenne az első lépés (picturebox hozzáadása a cell-hez). de a neten nem találok semmit. a microsoft host control-os példáját próbáltam, nem az kell nekem.

    tudjátok, minden control-nak van Controls tömbje, és akkor írhatom, hogy Controls.Add(picturebox). de úgy néz ki, hogy a cell-nek nincs.

  • 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!

  • martonx
    veterán

    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!

    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.

  • 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!

  • martonx
    veterán

    Sziasztok!
    Most a multiple selecttel akadtam el. Úgy olvastam hogy egy stringben tárolódik le az értéke a kiválasztott elemeknek vesszővel elválasztva. Adott ez a kód:
    <html>
    <head>
    <title>My HTML application</title>
    <HTA:APPLICATION
    APPLICATIONNAME="My HTML application"
    ID="MyHTMLapplication"
    VERSION="1.0"/>

    <script language="VBScript">
    Sub RunScript
    Dim strValaszt
    strValaszt = ertek.value
    document.write("<span>"&strValaszt&"</span>")

    End Sub
    </script>
    </head>

    <body bgcolor="white">
    <form>
    <select multiple="multiple" size="3" name="ertek">
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    </select>
    <input type="button" value="próba" onClick="RunScript">
    </form>

    </body>
    </html>

    Csak az első kijelölt elem kerül bele a változóba. Hogy tudom belevarázsolni mindet?
    Köszönöm!

    Sub RunScript
    For i = 0 to (ertek.Options.Length - 1)
    If (ertek.Options(i).Selected) Then
    strComputer = strComputer & ertek.Options(i).Value & vbcrlf
    End If
    Next
    Msgbox strComputer
    End Sub

  • dkaro
    őstag

    Sziasztok!
    Most a multiple selecttel akadtam el. Úgy olvastam hogy egy stringben tárolódik le az értéke a kiválasztott elemeknek vesszővel elválasztva. Adott ez a kód:
    <html>
    <head>
    <title>My HTML application</title>
    <HTA:APPLICATION
    APPLICATIONNAME="My HTML application"
    ID="MyHTMLapplication"
    VERSION="1.0"/>

    <script language="VBScript">
    Sub RunScript
    Dim strValaszt
    strValaszt = ertek.value
    document.write("<span>"&strValaszt&"</span>")

    End Sub
    </script>
    </head>

    <body bgcolor="white">
    <form>
    <select multiple="multiple" size="3" name="ertek">
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    </select>
    <input type="button" value="próba" onClick="RunScript">
    </form>

    </body>
    </html>

    Csak az első kijelölt elem kerül bele a változóba. Hogy tudom belevarázsolni mindet?
    Köszönöm!

  • martonx
    veterán

    Útközben sikerült megoldanom a problémát, bocsesz.
    Amúgy lényegében a textbox-ok összerakása dátummá kellett, mivel ebből a dátumból építkezett tovább a moduljaim és maga a form ezért kellett volna hibakezelés rossz dátum esetén ne legyen gond, hanem inkább hibaleállás.

    Esetleg olyan kérdésem, lenne még, hogy lehet megoldani azt hogy a GetOpenFilename -el új ablak nyíljon meg ha egy fájlt kiválasztok?
    Probléma az hogy Reflection-ben ami WRQ rendszer, VBA van aláépítve de egy átírtabb verzió, amiben nincs Dialog metódus hogy előhívjam csak GetOpenFilename van ami ha megnyitok egy fájt az elérési útját adja vissza.
    fileToOpen = Application .GetOpenFilename("Text Files (*.txt), *.txt")

    sosem használtam Reflection X-et. Passz.

  • stigma
    addikt

    Amit írtál kódot nem tűnik rossznak, szóval nem igazán értem, hogy most mi is a bajod?
    Hogy kell bezárni a form-ot, a msgbox után? Vagy mit szeretnél tudni?
    Esetedben abszolút nem kell az on error-okkal szórakozni. Simán használod az IsDate függvényt, és ennek értelmében vagy hibát jelzel vissza a felhasználónak vag futtatod a kódot.

    Útközben sikerült megoldanom a problémát, bocsesz.
    Amúgy lényegében a textbox-ok összerakása dátummá kellett, mivel ebből a dátumból építkezett tovább a moduljaim és maga a form ezért kellett volna hibakezelés rossz dátum esetén ne legyen gond, hanem inkább hibaleállás.

    Esetleg olyan kérdésem, lenne még, hogy lehet megoldani azt hogy a GetOpenFilename -el új ablak nyíljon meg ha egy fájlt kiválasztok?
    Probléma az hogy Reflection-ben ami WRQ rendszer, VBA van aláépítve de egy átírtabb verzió, amiben nincs Dialog metódus hogy előhívjam csak GetOpenFilename van ami ha megnyitok egy fájt az elérési útját adja vissza.
    fileToOpen = Application .GetOpenFilename("Text Files (*.txt), *.txt")

  • martonx
    veterán

    Hali abban kérnék segítséget, hogy lenne egy kivételkezelés amihez help-et kérnék.
    3 textbox egy formon amiben egy adott dátum nap,hónap, év eredményét adom meg, majd azt a későbbiekben felhasználom, átalakítva dátummá.
    Ehhez kellene valami error kezelés, mégpedig ha rossz dátumot adok meg az adott metódus ne induljon el vagy dobjon ki hibát, elég lesz egy msgbox is.(itt az intervallumokat már lekezeltem)

    sub lista()
    ...
    on error goto errorhandler:
    datum= ev.text + "." + nap.text + "." + textbox1.text (Ebből lesz a dátum)
    if not isdate(datum) then
    msgbox("Nem dátum formátum")
    on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
    elseif datum = " " then
    msgbox("Üres")
    on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
    else
    folytatódjon a többi parancs lefutása
    itt próbáltam "on error resume next"-el, de sajnos semmit nem csinál.

    errorhandler:
    msgbox err.descreption ' ide leeht inkább switch case -el kellene error-t kezelnem
    exit sub

    Segítséget előre is köszönöm, bocs ha nagy hülyeséget kérdeztem csak eléggé fáradt vagyok és ma meg kéne oldanom a problémát.

    Amit írtál kódot nem tűnik rossznak, szóval nem igazán értem, hogy most mi is a bajod?
    Hogy kell bezárni a form-ot, a msgbox után? Vagy mit szeretnél tudni?
    Esetedben abszolút nem kell az on error-okkal szórakozni. Simán használod az IsDate függvényt, és ennek értelmében vagy hibát jelzel vissza a felhasználónak vag futtatod a kódot.

  • stigma
    addikt

    Hali abban kérnék segítséget, hogy lenne egy kivételkezelés amihez help-et kérnék.
    3 textbox egy formon amiben egy adott dátum nap,hónap, év eredményét adom meg, majd azt a későbbiekben felhasználom, átalakítva dátummá.
    Ehhez kellene valami error kezelés, mégpedig ha rossz dátumot adok meg az adott metódus ne induljon el vagy dobjon ki hibát, elég lesz egy msgbox is.(itt az intervallumokat már lekezeltem)

    sub lista()
    ...
    on error goto errorhandler:
    datum= ev.text + "." + nap.text + "." + textbox1.text (Ebből lesz a dátum)
    if not isdate(datum) then
    msgbox("Nem dátum formátum")
    on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
    elseif datum = " " then
    msgbox("Üres")
    on error goto 0 'Dobjon üzenetet, álljon le a form futtatása
    else
    folytatódjon a többi parancs lefutása
    itt próbáltam "on error resume next"-el, de sajnos semmit nem csinál.

    errorhandler:
    msgbox err.descreption ' ide leeht inkább switch case -el kellene error-t kezelnem
    exit sub

    Segítséget előre is köszönöm, bocs ha nagy hülyeséget kérdeztem csak eléggé fáradt vagyok és ma meg kéne oldanom a problémát.

  • 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

  • martonx
    veterán

    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? :)

    azért marad egy sorban, mert egyben adjuk át neki az összefűzött értékeket.

  • 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? :)

  • martonx
    veterán

    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!

    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

  • 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!

  • dkaro
    őstag

    Akkor újabb kérdésem lenne (gondolom lesz még:)):
    Adott ez a script részletem:
    Célja az lenne hogy kiiratom a Printers ouban található Csoportokat (mind univerzális biztonsági csoport)
    <script language="vbs">
    Set objOU = GetObject("LDAP://srv0101vg/ou=Printers,ou=cég,dc=varosgazda,dc=hu")
    objOU.Filter = Array("group")
    For Each objGroup in objOU
    document.write("<option value='"&objGroup.Name&">"&objGroup.Name&"</option>")
    Next
    </script>

    Nos ki is listázza a csoportokat de nem mindet. Csak 13at a 29ből hibát pedig nem kapok.
    Mit kéne máshogy írnom?
    Köszönöm!

    ---
    Szerk:
    Pontosítanék. Minden 2kat ír csak ki. Ez vmi triviális hiba lehet.:)

  • dkaro
    őstag

    Szia!

    Egy for ciklussal bejárod a tömböt, és mondjuk egy div-be (ami a DataArea) belerakod a rádió gombokat.
    strHTML = strHTML & "<input id=" & intButtonCount & " type="radio value= " & tomb(i) & ">"
    És az összeállított rádió gombokat így rakod bele a div-be:
    DataArea.InnerHTML = strHTML

    Köszönöm!!!

  • martonx
    veterán

    Sziasztok!
    Remélem jó helyre írok. VBS HTA script írásban szeretnék segítséget kérni.
    A célom:
    Egy tömbbe kigyűjtöttem egy OU Groupjait.
    Szeretném ezeket a groupokat html formban dinamikusan megjeleníteni.
    Tehát pl ha x a mérete a tömbnek akkor generáljon le x radiogombot így, hogy:
    radiogomb1 értéke tomb(0)
    radiogomb2 értéke tomb(1)
    stb...

    Tudom, hogy kicsit összetettebb de remélem valaki tud segíteni.
    Azt fontos megjegyezni, hogy nem egész 2 napja "foglalkozgatok" vbssel.:)
    Előre is köszönöm a segítséget!
    dkaro

    Szia!

    Egy for ciklussal bejárod a tömböt, és mondjuk egy div-be (ami a DataArea) belerakod a rádió gombokat.
    strHTML = strHTML & "<input id=" & intButtonCount & " type="radio value= " & tomb(i) & ">"
    És az összeállított rádió gombokat így rakod bele a div-be:
    DataArea.InnerHTML = strHTML

  • dkaro
    őstag

    Sziasztok!
    Remélem jó helyre írok. VBS HTA script írásban szeretnék segítséget kérni.
    A célom:
    Egy tömbbe kigyűjtöttem egy OU Groupjait.
    Szeretném ezeket a groupokat html formban dinamikusan megjeleníteni.
    Tehát pl ha x a mérete a tömbnek akkor generáljon le x radiogombot így, hogy:
    radiogomb1 értéke tomb(0)
    radiogomb2 értéke tomb(1)
    stb...

    Tudom, hogy kicsit összetettebb de remélem valaki tud segíteni.
    Azt fontos megjegyezni, hogy nem egész 2 napja "foglalkozgatok" vbssel.:)
    Előre is köszönöm a segítséget!
    dkaro

  • vilag
    tag

    mondjuk egy .Net telepítés, az kb. két kattintás egy .msi-re.
    Ha meg picit ügyesebb a rendszergazda, akkor automatizálja.
    Bár a rendszergazdákat ismerve 90%, hogy se nem ügyes, se dolgozni nem akar.

    Bár a mi rendszergazdánk a 90%-ba esik (nem ügyes annyira), azért meg is kell védenem, mert csak mellékesen rendszergazda, emellett ugyan olyan ügyintéző mint bármelyikünk a cégnél. A nemakarás, így betudható a rengeteg ügynek.

    Mondjuk ha sokat macerálom valami miatt általában kötélnek áll :)

  • vilag
    tag

    Domain van, vagy csak egy csomó gép workgroupban?
    Domainban simán berakjátok domain policy-be a telepítést és következő újrainduláskor felmegy. Workgroupra meg csak kell csinálni egy command file-t ami végigfut a hálózaton, fellép az összes gépre és felmásolja/elindítja a telepítőt (vagy csak bemásolod a silent telepítést indító cmd-t a startup-ba - ami ha fent van már letörli magát).

    Van esetleg valami hasonló command file mintád?

    Valami hasonlót kerestem igazából. Bár sejtem, hogy egy file ikoncserét nemigen lehet belőle levezérelni.
    Már az is haladás volna ha egy asztali parancsikon elhelyezést le tudnék vele vezérelni.

    Egyébként van domain, szerver meg minden Istennyila.

    Azért az vicces lenne ha a rendszergazda gépén is megjelenne a kis telepítőablak :D

  • martonx
    veterán

    Sajnos akkor mindkét megoldást (VB6, .NET) el kell vetnem, mert még ha tudom is a rendszergazda jelszót, nem lesz alkalmam feltenni minden gépre.
    Még amik helyben vannak, azok csak-csak, mert mondjuk a kora reggeli órákban megcsinálom mikor nincs itt senki, de a másik két központban lévő gépekre nem tudom feltenni. Elmenni nem tudok (na meg nem is akarok), a gépneveket meg nem tudom.

    Innentől meg a rendszergazda jóindulatán múlik, hogy hajlandó e ennyit vacakolni....
    de ahogy ismerem első szóra biztos nem csinálja meg.

    mondjuk egy .Net telepítés, az kb. két kattintás egy .msi-re.
    Ha meg picit ügyesebb a rendszergazda, akkor automatizálja.
    Bár a rendszergazdákat ismerve 90%, hogy se nem ügyes, se dolgozni nem akar.

  • sztanozs
    veterán

    Sajnos akkor mindkét megoldást (VB6, .NET) el kell vetnem, mert még ha tudom is a rendszergazda jelszót, nem lesz alkalmam feltenni minden gépre.
    Még amik helyben vannak, azok csak-csak, mert mondjuk a kora reggeli órákban megcsinálom mikor nincs itt senki, de a másik két központban lévő gépekre nem tudom feltenni. Elmenni nem tudok (na meg nem is akarok), a gépneveket meg nem tudom.

    Innentől meg a rendszergazda jóindulatán múlik, hogy hajlandó e ennyit vacakolni....
    de ahogy ismerem első szóra biztos nem csinálja meg.

    Domain van, vagy csak egy csomó gép workgroupban?
    Domainban simán berakjátok domain policy-be a telepítést és következő újrainduláskor felmegy. Workgroupra meg csak kell csinálni egy command file-t ami végigfut a hálózaton, fellép az összes gépre és felmásolja/elindítja a telepítőt (vagy csak bemásolod a silent telepítést indító cmd-t a startup-ba - ami ha fent van már letörli magát).

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