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.
Tossa alla on jonkinlainen yritelmä mutta en saa sitä toimimaan.
'Taulun määritys Dim dbsKaikkiLuettelot As DAO.Database Dim rstKysely As DAO.Recordset Dim stSQL as String Static Taulukko(1000,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
Esim. rivi:
Set rstKysely = dbsKaikkiLuettelot.OpenRecordset(stSQL, dbOpenDynaset) 'Kyselyn muodostus
Valittaa pakollisen objektin puutetta???
Pienestäkin avusta kiitollinen :)
T: leppo
SQL:n Insert Into:lla voit "varmuuskopioida" tietoja helposti.
INSERT INTO OSALUETTELOT SELECT [UusiOsaluettelo] AS Osaluettelo, o.Komponentti FROM OSALUETTELOT o WHERE o.Osaluettelo=[HaluttuOsaluettelo] GROUP BY o.Komponentti;
Edit: Unohtui mainita, että Select-osassa pitää hakea kaikki kentät siinä järjestksessä, missä ne on tuolla Osakuettelot-taulussa, että Insert Into osaa ne lisätä oikein taulukkoon.
Kiitos
Sain tuon tekemäni koodin toimimaan, kun sain siihen apuja.
BadSource tossa esimerkissäsi SQL-koodia on se vika että, sama komponentti ei kopioidu kuin kerran. Eli jos yritän kopioida 1,2,3,4,1,2 niin ei kopioidu kuin 1,2,3,4
T;leppo
Group By poistaa tuplat ryhmitellen arvot yhteen. Korvaa Group By Order By:lla, niin saat lisättyä arvot 1,2,3,4,1,2. Jäsjestys on tosin 1,1,2,2,3,4.
Aihe on jo aika vanha, joten et voi enää vastata siihen.