Kopiointi Accesissä

Moi
Rustailen tässä pientä projektia. Nyt olen hieman jumissa.
Teen tietokantaa joka käsittelee osaluetteloita.

Osaluettelo jossa olevat komponentit on eritelty tunnuksella tiettyyn osaluetteloon. Miten voisin kopioida toisesta osaluettelosta "pohjan" (samat osat) uuteen osaluetteloon? Ja vielä siten että osaluettelon tunnus muuttuu ja vanha säilyy.
13968
Äänestä

Muut lukivat myös

Vastaukset 13

Vanhimmat

Kaikkein helpon tapa on luoda lyhyt koodinpätkä VB:llä tai Accessin VBA:lla. Eli haet recordset muuttujaan edellisen (vastaavan) osaluettelon tiedot ja lisäät tietokantaan (add) kopio vaihdettuna uudella osaluettelotunnuksella.

Mutta mitäs kun esim. jokin komponentti esim. poistuu kokonaan ja on monessa osaluettelossa? Yht äkkiä voisi sanoa että ylläpito tulee olemaan hankalaa.
Käytännöllisintä olisi ehkä sitoa komponentit osaluetteloihin eikä toistapäin.

Äänestä
  • Kiitos suuresti vihjeestä. Mutta jos vielä olisi mahdollista saada lisä-apua tuohon koodiin. VBA-taitoni ovat olemattomat.

    Äänestä

  • Access kirjoitti:

    Kiitos suuresti vihjeestä. Mutta jos vielä olisi mahdollista saada lisä-apua tuohon koodiin. VBA-taitoni ovat olemattomat.

    Ohessa esimerkki tuosta kaikkein yksinkertaisemmasta (vaikea ylläpidettävä) tapauksesta.
    Tehokkaampiakin tapoja softan suhteen on mutta otin helppotajuisimman.
    Pätkä on Accessin omalla editorilla ja toimii myös 97 versiossa.
    Huom.! Referenssikirjastosta DAO 3.6 (tai pienempi) päälle

    'Taulun määritys
    Dim dbsKaikkiLuettelot As DAO.Database
    Dim rstKysely As DAO.Recordset
    Dim stSQL as String
    Static Taulukko(1000) as Variant 'Väliaikainen taulukko

    Set dbsKaikkiLuettelot = CurrentDb

    'Kyselyn muodostus
    stSQL = "SELECT OSALUETTELOT.Osaluettelo, OSALUETTELOT.Komponentti "
    stSQL = stSQL & "FROM OSALUETTELOT"
    stSQL = stSQL & "WHERE (((OSALUETTELOT.Osaluettelo)=" & Chr(34)
    stSQL = stSQL & HaluttuOsaluettelo & Chr(34) & "));" 'Chr(34) koska lainausmerkit tarvitaan

    'Kyselyn käynnistys
    Set rstKysely = dbsKaikkiLuettelot.OpenRecordset(stSQL, dbOpenDynaset) 'Kyselyn muodostus

    'Tiedot taulukkoon
       rstKysely.MoveFirst
       i = 1
       'Silmukka
       do
          Taulukko(i,1) = rstKysely!Komponentti
          i = i 1
          rstKysely.MoveNext
       Loop While Not rstKysely.EOF

    'Tiedot tauluun
       For j = 1 To i - 1
          rstKysely.AddNew
             rstKysely!Osaluettelo = UusiOsaluetteloNimi
             rstKysely!Komponentti = Taulukko(j)
          rstKysely.Update
       next j

    Äänestä

  • KaksiKirjaa kirjoitti:

    Ohessa esimerkki tuosta kaikkein yksinkertaisemmasta (vaikea ylläpidettävä) tapauksesta.
    Tehokkaampiakin tapoja softan suhteen on mutta otin helppotajuisimman.
    Pätkä on Accessin omalla editorilla ja toimii myös 97 versiossa.
    Huom.! Referenssikirjastosta DAO 3.6 (tai pienempi) päälle

    'Taulun määritys
    Dim dbsKaikkiLuettelot As DAO.Database
    Dim rstKysely As DAO.Recordset
    Dim stSQL as String
    Static Taulukko(1000) as Variant 'Väliaikainen taulukko

    Set dbsKaikkiLuettelot = CurrentDb

    'Kyselyn muodostus
    stSQL = "SELECT OSALUETTELOT.Osaluettelo, OSALUETTELOT.Komponentti "
    stSQL = stSQL & "FROM OSALUETTELOT"
    stSQL = stSQL & "WHERE (((OSALUETTELOT.Osaluettelo)=" & Chr(34)
    stSQL = stSQL & HaluttuOsaluettelo & Chr(34) & "));" 'Chr(34) koska lainausmerkit tarvitaan

    'Kyselyn käynnistys
    Set rstKysely = dbsKaikkiLuettelot.OpenRecordset(stSQL, dbOpenDynaset) 'Kyselyn muodostus

    'Tiedot taulukkoon
       rstKysely.MoveFirst
       i = 1
       'Silmukka
       do
          Taulukko(i,1) = rstKysely!Komponentti
          i = i 1
          rstKysely.MoveNext
       Loop While Not rstKysely.EOF

    'Tiedot tauluun
       For j = 1 To i - 1
          rstKysely.AddNew
             rstKysely!Osaluettelo = UusiOsaluetteloNimi
             rstKysely!Komponentti = Taulukko(j)
          rstKysely.Update
       next j

    Kiitos suuresti tuosta esimerkistä. En saanut esimerkkiä vielä toimimaan. Tuosta Referenssikirjastosta DAO 3.6 Mistä sen voi kytkeä päälle. Käytössä minulla on Access 2003.
    Olen paininut tämän projektin kanssa jo puolivuotta. Harmittaa että menin lupaamaan tietämättömyydessäni tätä. Mutta pakko olisi saada tämä toimimaan, kun olen aikaakin niin paljon siihen kuluttanut. Apu on kyllä poikaa.

    Äänestä

  • Access kirjoitti:

    Kiitos suuresti tuosta esimerkistä. En saanut esimerkkiä vielä toimimaan. Tuosta Referenssikirjastosta DAO 3.6 Mistä sen voi kytkeä päälle. Käytössä minulla on Access 2003.
    Olen paininut tämän projektin kanssa jo puolivuotta. Harmittaa että menin lupaamaan tietämättömyydessäni tätä. Mutta pakko olisi saada tämä toimimaan, kun olen aikaakin niin paljon siihen kuluttanut. Apu on kyllä poikaa.

    MOI, Kun teet liittymän niin laita siihen kaksi tekstikenttää joihin toiseen tulee vanha osaluettoninimi (huom.! isot ja pienet kijaimet) ja toiseen uusi. Ne ovat aina variantteja. Jos luot liittymään esim. "Painonappulan" niin pääset sitäkautta softaan. Tools -> References -> Mikrosoft DAO 3.6 object library. Ton kyselyn mikä valitaan on hyvä ensiksi käyttää query jutussa ensin niin, että haet halutun osaluettelon ja sitten otat sen SQL näyttöön ja kopioit ja siirrät sen stSQL muuttujaan. Muista myös välilyönnit sillä jos niitä ei ole niin....Ei toimi

    Äänestä

  • KaksiKirjaa kirjoitti:

    MOI, Kun teet liittymän niin laita siihen kaksi tekstikenttää joihin toiseen tulee vanha osaluettoninimi (huom.! isot ja pienet kijaimet) ja toiseen uusi. Ne ovat aina variantteja. Jos luot liittymään esim. "Painonappulan" niin pääset sitäkautta softaan. Tools -> References -> Mikrosoft DAO 3.6 object library. Ton kyselyn mikä valitaan on hyvä ensiksi käyttää query jutussa ensin niin, että haet halutun osaluettelon ja sitten otat sen SQL näyttöön ja kopioit ja siirrät sen stSQL muuttujaan. Muista myös välilyönnit sillä jos niitä ei ole niin....Ei toimi

    Terve
    Jos saisin vielä lisäselostusta aikaisempaan esimerkkiin. Olen ohittanut SQL-jutut sujuvasti opiskellessani Acccessiä. Se oli virhe!

    Eli rimpsu:

    stSQL = "SELECT OSALUETTELOT.Osaluettelo, OSALUETTELOT.Komponentti "
    stSQL = stSQL & "FROM OSALUETTELOT"
    stSQL = stSQL & "WHERE (((OSALUETTELOT.Osaluettelo)=" & Chr(34)
    stSQL = stSQL & HaluttuOsaluettelo & Chr(34) & "));" 'Chr(34) koska lainausmerkit tarvitaan

    on sama kuin tekisin Accessissä SQL-kyselyn.
    Ymmärsinkö oikein?

    Olenko mahdollisesti antanut liian vähän tietoa tietokannastani.

    Eli Osaluettelo(taulukko) jonne menevät kaikki osaluettelossa tarvittavat komponentit. Komponentit erotellaan eri osaluetteloihin koneikon tunnuksella. Sitten on lomake jossa alilomakkeena kysely osaluettelosta. Tällä lomakkeella suoritetaan komponenttien lisääminen tiettyyn osalutteloon. Ja kyselyllä tietty osaluettelo.

    Asian voisi varmasti tehdä helpomminkin, en vain tiedä miten??

    Äänestä

  • Access kirjoitti:

    Terve
    Jos saisin vielä lisäselostusta aikaisempaan esimerkkiin. Olen ohittanut SQL-jutut sujuvasti opiskellessani Acccessiä. Se oli virhe!

    Eli rimpsu:

    stSQL = "SELECT OSALUETTELOT.Osaluettelo, OSALUETTELOT.Komponentti "
    stSQL = stSQL & "FROM OSALUETTELOT"
    stSQL = stSQL & "WHERE (((OSALUETTELOT.Osaluettelo)=" & Chr(34)
    stSQL = stSQL & HaluttuOsaluettelo & Chr(34) & "));" 'Chr(34) koska lainausmerkit tarvitaan

    on sama kuin tekisin Accessissä SQL-kyselyn.
    Ymmärsinkö oikein?

    Olenko mahdollisesti antanut liian vähän tietoa tietokannastani.

    Eli Osaluettelo(taulukko) jonne menevät kaikki osaluettelossa tarvittavat komponentit. Komponentit erotellaan eri osaluetteloihin koneikon tunnuksella. Sitten on lomake jossa alilomakkeena kysely osaluettelosta. Tällä lomakkeella suoritetaan komponenttien lisääminen tiettyyn osalutteloon. Ja kyselyllä tietty osaluettelo.

    Asian voisi varmasti tehdä helpomminkin, en vain tiedä miten??

    Moi,
    Mahdoinkohan ymmärtää oikein ongelman. Tarkoitus oli ilmeiseti kopioida vanha uudella nimellä nopeasti ja vaivattomasti, right?

    Rimpsu on ihan puhtaasti Accessin SQL:ää ja napattu tekemällä query ja sql-näkymä. Kysely on siirretty string tyypin muuttujaan koska yhdet heittomerkit tarvitaan välissä (se mikä osoittaa olemassa olevan osaluetettelon). Eli ideana oli että sinulla on esim. valintaruutu millä on nimi (tuo HaluttuOsaluettelo) ja luot tekstikentän mihin voit formillasi kirjoittaa uusi osaluettolonimi). Form mikä on käytössä on ihan ok jossillä vain on tilaa tekstikenttään. Ja lisäksi tarvitaan komentonappula (tai näppäinkomentoyhdistelmä) minkä taakse laitat kopiointi koodin ja vol´a, voit heti hakea olemassa olevaan formiin uuden osaluettelon missä on samat osat kuin siinä minkä halusit kopioida. Softa oli testattu.

    Äänestä

  • KaksiKirjaa kirjoitti:

    Moi,
    Mahdoinkohan ymmärtää oikein ongelman. Tarkoitus oli ilmeiseti kopioida vanha uudella nimellä nopeasti ja vaivattomasti, right?

    Rimpsu on ihan puhtaasti Accessin SQL:ää ja napattu tekemällä query ja sql-näkymä. Kysely on siirretty string tyypin muuttujaan koska yhdet heittomerkit tarvitaan välissä (se mikä osoittaa olemassa olevan osaluetettelon). Eli ideana oli että sinulla on esim. valintaruutu millä on nimi (tuo HaluttuOsaluettelo) ja luot tekstikentän mihin voit formillasi kirjoittaa uusi osaluettolonimi). Form mikä on käytössä on ihan ok jossillä vain on tilaa tekstikenttään. Ja lisäksi tarvitaan komentonappula (tai näppäinkomentoyhdistelmä) minkä taakse laitat kopiointi koodin ja vol´a, voit heti hakea olemassa olevaan formiin uuden osaluettelon missä on samat osat kuin siinä minkä halusit kopioida. Softa oli testattu.

    Moi

    Virhe ilmoitus: Tapahtumaominaisuuden arvoksi asetettu lauseke "napsautattessa" aiheutti virheen :Wrong number of dimension.

    Osaatko vihjata mistä etsisin virhettä.
    (Accessin VBA on kenkkuillut hieman koko ajan. Esim.
    wizardit ei toimi lainkaa vaan herjaa jostakin puuttuvasta osasta. Ohjeessa vaan kehotetaan laittemaan se päälle mutta mitään ei ole pois päältä???)

    Äänestä

  • Access kirjoitti:

    Moi

    Virhe ilmoitus: Tapahtumaominaisuuden arvoksi asetettu lauseke "napsautattessa" aiheutti virheen :Wrong number of dimension.

    Osaatko vihjata mistä etsisin virhettä.
    (Accessin VBA on kenkkuillut hieman koko ajan. Esim.
    wizardit ei toimi lainkaa vaan herjaa jostakin puuttuvasta osasta. Ohjeessa vaan kehotetaan laittemaan se päälle mutta mitään ei ole pois päältä???)

    Eli virheilmoitus (wrong number of dimension) tulee 6.nelta riviltä olevasta taulukko(i,1).
    VBA ilmoittaa näin.

    'Tiedot taulukkoon
    rstKysely.MoveFirst
    i = 1
    'Silmukka
    Do
    Taulukko(i, 1) = rstKysely!Koodi
    i = i 1
    rstKysely.MoveNext
    Loop While Not rstKysely.EOF

    'Tiedot tauluun
    For j = 1 To i - 1
    rstKysely.AddNew
    rstKysely!Koneikontunnus = UusiOsaluetteloNimi
    rstKysely!Koodi = Taulukko(j)
    rstKysely.Update
    Next j
    End Sub

    Äänestä

  • Access kirjoitti:

    Eli virheilmoitus (wrong number of dimension) tulee 6.nelta riviltä olevasta taulukko(i,1).
    VBA ilmoittaa näin.

    'Tiedot taulukkoon
    rstKysely.MoveFirst
    i = 1
    'Silmukka
    Do
    Taulukko(i, 1) = rstKysely!Koodi
    i = i 1
    rstKysely.MoveNext
    Loop While Not rstKysely.EOF

    'Tiedot tauluun
    For j = 1 To i - 1
    rstKysely.AddNew
    rstKysely!Koneikontunnus = UusiOsaluetteloNimi
    rstKysely!Koodi = Taulukko(j)
    rstKysely.Update
    Next j
    End Sub

    Joo, ajatusvirhe kun tein kokeeksi kaksiuloitteisen taulukon ja käytin mielessä helppoa esimerkkiä ja missasin kokeilussa (laiskuutta).
    Mihin ihmeeseen apuja kaipaat? Olet jo polulla!

    Äänestä

  • KaksiKirjaa kirjoitti:

    Joo, ajatusvirhe kun tein kokeeksi kaksiuloitteisen taulukon ja käytin mielessä helppoa esimerkkiä ja missasin kokeilussa (laiskuutta).
    Mihin ihmeeseen apuja kaipaat? Olet jo polulla!

    Että polulla :) Mutta kun se polku häipyy näkyvistä melkein koko ajan. Ja kun löydän polun uudestaan, lähden sitä kulkemaan niin ses päätyy umpikujaan. Ja palaan lähtö pisteeseen.

    Kerro nyt OI SUURI JA VIISAS missä vika piilee?

    Ja pari lisäkyssäriä perään. Kun täytän uutta osaluetteloa. Komponentit ovat omassa alitaulukossa. Kun kaksois-klikkaan alitaulukosta osan se menee osaluetteloon. Miten saan kursorin siirtymään aina seuraavaan tietueeseen. Yritin näillä move-johdannaisilla mutta en onnistunut. Vihjeitä kaivataan...

    Äänestä

  • Access kirjoitti:

    Että polulla :) Mutta kun se polku häipyy näkyvistä melkein koko ajan. Ja kun löydän polun uudestaan, lähden sitä kulkemaan niin ses päätyy umpikujaan. Ja palaan lähtö pisteeseen.

    Kerro nyt OI SUURI JA VIISAS missä vika piilee?

    Ja pari lisäkyssäriä perään. Kun täytän uutta osaluetteloa. Komponentit ovat omassa alitaulukossa. Kun kaksois-klikkaan alitaulukosta osan se menee osaluetteloon. Miten saan kursorin siirtymään aina seuraavaan tietueeseen. Yritin näillä move-johdannaisilla mutta en onnistunut. Vihjeitä kaivataan...

    Jos kiitos mutta ei kiitos, Access ominaisuusksista en tiedä kaikkea, mutta pistäisitko varsinaisen softan niin tsekkaan miten se on kirjoitettu. Musta tuntuu että idea kuitenkin on siinä osaluettelossa mikä on jo olemassa ja jolla on jo tunnus, jolla voidaan vaihtaa uusi vastaava osaluettelo. Olet jo niin lähellä!! Ohjelmointiputkasta löytyy muutamia loistavia esimerkkejä (Suomenkielinen).

    Äänestä

  • KaksiKirjaa kirjoitti:

    Jos kiitos mutta ei kiitos, Access ominaisuusksista en tiedä kaikkea, mutta pistäisitko varsinaisen softan niin tsekkaan miten se on kirjoitettu. Musta tuntuu että idea kuitenkin on siinä osaluettelossa mikä on jo olemassa ja jolla on jo tunnus, jolla voidaan vaihtaa uusi vastaava osaluettelo. Olet jo niin lähellä!! Ohjelmointiputkasta löytyy muutamia loistavia esimerkkejä (Suomenkielinen).

    Tervehdys
    Vieläkö "Kaksi kirjaa" on maisemissa. Olen ollut lomalla...

    Äänestä

Kommentoi aloitusta


Access kirjoitti:

Moi
Rustailen tässä pientä projektia. Nyt olen hieman jumissa.
Teen tietokantaa joka käsittelee osaluetteloita.

Osaluettelo jossa olevat komponentit on eritelty tunnuksella tiettyyn osaluetteloon. Miten voisin kopioida toisesta osaluettelosta "pohjan" (samat osat) uuteen osaluetteloon? Ja vielä siten että osaluettelon tunnus muuttuu ja vanha säilyy.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu