Merkkijonoista voit hakea merkkiä myös oikealta päin seuraavasti:
'Mitataan merkkijonon pituus
pituus = Len(mj)
'Haetaan \-merkkiä merkki merkiltä oikealta
For i = 1 To pituus
loppu = Right(mj,i)
merkki = Left(loppu,1)
If merkki = "\" Then
alku = Left(mj,pituus-i+1)
'Poistutaan loopista
Exit Sub
End If
Next
Kun ohjelman ajo pysähtyy virheilmoitukseen myös julkiset muuttujat katoavat muistista!
Kolmiulotteinen VB/VBA-matriisi:
matriisi(100,10,15)
Tietojen haku työkirjasta matriisimuuttujaan kesti 6 sek.
Tietojen haku matriisimuuttujasta työkirjaan kesi 30 sek.
Nämä toimivat väärin ja antoivat väärän tiedon:
Workbooks().Name
Workbooks().FullName
Oikean työkirjan nimen antoi menetelmä:
Workbooks().Path & "\" & Workbooks().Name
Tee ja käytä omia funktioita:
Function summa(hakuarvo)
Set hakualue = Sheets(1).Range("tili")
Set summaalue = Sheets(1).Range("mk")
summa = Application.SumIf(hakualue, hakuarvo, summaalue)
MsgBox summa
End Function
Function saldo(tili)
VBA-lausekkeet
End Function
Ajetaan funktio:
saldo(1000)
Voit käyttää kaikkia Excelin funktioita VB:ssä Application-objektin avulla. Näitä funktioita ovat:
Sum, SumIf, Min, Max, Count
Select Case -rakennetta voi käyttää monimutkaisissa ajastussysteemeissä, joissa Case käynnistää samana aikana monia eri toimintoja:
Case "19:30"
ajaOhjelma1
ajaOhjelma2
muuttuja1 = xxx
muuttuja2 = yyy
Päivämäärät käsitellään Excelistä VBA:han seuraavasti:
Dim pv As Date
pv = c.Value
kk = Month(pv)
Poiminta aikaväliltä tammi-kesäkuu suoritetaan:
If kk>=1 And kk<=6
ActiveSheet.Shapes("ComboBox1").Top = ActiveCell.Top + ActiveCell.Height
ActiveSheet.Shapes("ComboBox1").Left = ActiveCell.Left
ActiveCell.Select
Voit hakea tietoa HTML-dokumentista elementtien ID-attribuutin avulla.
Esim:
<DIV id="teksti1">Jotakin tekstiä</DIV>
<DIV id="teksti2">Jotakin muuta tekstiä</DIV>
Teksti haetaan sivulta näin:
haettavaTeksti = document.all.teksti1.innerText
Eri vaihtoehdot arvojen lukemiseksi recordsetin kentistä:
arvo = RS.Fields.Item("nimi").Value
arvo = RS.Fields.Item(0).Value
arvo = RS.Fields("nimi").Value
arvo = RS.Fields(0).Value
arvo = RS("nimi").Value
arvo = RS(0).Value
arvo = RS!nimi
Solujen lukumäärä HTML-taulukossa saadaan:
document.all.taulu.cells.length
Rivien lukumäärä HTML-taulukossa saadaan:
document.all.taulu.rows.length
Solujen lukumäärä rivillä saadaan:
document.all.taulu.rows(1).cells.length
Arvo haetaan tietystä taulukon solusta:
document.all.taulu.rows(1).cells(0).innerText
Voit hakea tietoja HTML-dokumentin eri osista Excel-taulukkoon. Näitä tietoja voivat olla HTML-taulukon sisältö, muuttujien arvot ja myös JS-tiedoston sisältö.
WebBrowser-objektilla voidaan HTML-documentti eli www-sivu tai isompikin web-sovellus avata Excelin UserFormille ja siitä voidaan sitten helposti lukea tietoja Excel-taulukkoon.
Tiedosto avataan seuraavasti:
WebBrowser1.Navigate (tiedostonimi)
Luetaan dokumentin otsikko
x = WebBowser1.Document.Title
Luetaan HTML-taulukon ensimmäisen tietosolun sisältö:
x = WebBrowser1.Document.all.taulu.Cells(0).innerText
tai toinen tapa:
WebBrowser1.Document.all.taulu.rows(0).cells(0).innerText
Seuraavat SQL-kyselyt toimivat:
SELECT * FROM viennit WHERE MONTH(pvm) = 6
SELECT * FROM viennit WHERE MONTH(pvm) BETWEEN 3 AND 4
Samassa Excel-taulukossa ja samassa Excel-työkirjassa voi olla useita nimettyjä taulukkoalueita eli tietokannan tauluja. Nämä alueet vastaavat Data Objektien Recordsetteja eli tietuejoukkoja.
Nimetyn alueen pitää sisältää:
1. Kenttänimet eli sarakeotsikot
2. Tietuerivit
Voit saada selville mitä objektia painettiin hiirellä seuraavasti:
Sub Label1_Click()
i on Public-muuttuja
i = 1
Module1.ajaOhjelma
End Sub
PictureBox tyhjennetään "piirroksista" eli sisällöstä:
PictureBox1.Cls
Jotta SQL-kysely Visual Basicin Data-kontrollilla onnistuisi, pitää Data-kontrollin RecordsetType olla 1 - Dynaset!!
Hiiren liikkeisiin perustuva tapahtumaohjaus perustuu VB:ssä MouseMove-tapahtumaan ja IF-lauseisiin:
Sub Picture1_MouseMove()
If X > 0 And X < 100 And Y > 0 And Y < 50
ElseIf
Else
End If
End Sub
Hiiren liikkeisiin perustuvat tulokset, ohjeet ym. voit näyttää sovellusikkunan omalla tilarivillä:
StatusBar1.Panels(1).Text = ""
Voit esivalita ListBoxista ja ComboBoxista tietyn vaihtoehdon seuraavasti:
ListBox1.Value = ListBox1.List(0)
Tietojen lisääminen SQL-lauseella kiintolevyllä olevaan tietokantaan:
mySQL = "INSERT INTO taulu (kenttä1, kenttä2) VALUES ('arvo1', 'arvo2')"
Tietojen lisäys suoritetaan:
myUpdate = myDB.Execute(mySQL)
arvo = CDbl(teksti)
Tyhjä Excel-tietokanta muodostuu vain kenttäotsikoista, joiden alue on nimetty "tauluksi". Tauluun ei siis sisälly tyhjiä rivejä!!
SQL-kielen INSERT-lause osaa kasvattaa aluetta automaattisesti!
Voit antaa eri käyttäjille erilaisia oikeuksia poimintoihin antamalla eri käyttäjille käyttöön erilaiset valintalistat seuraavasti:
Kysytään ensin käyttäjätunnus:
tunnus = InputBox()
Tarkistetaan tunnus
If tunnus = "salasana1" Then
ComboBox1.RowSource = "alue1"
ElseIf tunnus = "salasana2" Then
ComboBox1.RowSource = "alue2"
Else
End
End If
Huomaa, että toiseksi viimeisen rivin End estää pääsyn listalle väärällä tunnuksella!!
alue1 ja alue2 ovat taulukossa olevia nimettyjä alueita, joista valintalistan sisältö haetaan.
Piilota VB-koodi salasanalla.
Saat nykyisen kuukauden esivalituksi valintalistoilla:
kk = Month(Date)
ComboBox1.Value = kk
Voit Excelin UserFormilta käsin käsitellä:
1. Saman työkirjan sivuja
2. Eri työkirjan sivuja
Voit esim. tulostaa aktiivisen sivun UserFormin alta:
ActiveWindow.SelectedSheets.PrintOut
SQL-kysely Access-tietokannasta toimi myös tällä lauseelle:
SELECT * FROM Customers IN "F:\dbfiles\custdb.mdb"
Access 1.0 -tietokannan avaus Exceliin toimi seuraavalla lauseella:
Set myDB = OpenDatabase("D:\Access\Nwind.mdb")
Saat tietokannan kaikkien taulujen nimet selville seuraavasti:
Do Until i = db.TableDefs.Count
Cells(i + 1, 1).Value = db.TableDefs(i).Name
i = i + 1
Loop
tai toisella tavalla
For i = 0 To db.TableDefs.Count-1
Cells(i + 1, 1).Value = db.TableDefs(i).Name
Next
Voit puhuttaa tekstitiedoston MikroPuhe-ohjelmalla VB-ohjelmasta:
RetVal = Shell("D:\puhe\mp4.win.exe D:\tekstit\jukka.txt", 1)
Saat HTML-lomakkeen taustavärin heksa-punaiseksi:
document.lomake.style.BackgroundColor = "#ff0000"
Voit ajaa minkä tahansa JavaScript-ohjelman A-elementin linkistä seuraavasti:
<A HREF="javascript:otaOstoskoriin(101)">
Voit ajaa myös useita ohjelmia:
<A HREF="javascript:ohjelma1();ohjelma2;...">
Voit ajaa myös yksittäisiä JS-lauseita:
<A HREF="javascript:lause1;lause2;...">
Saat lukujen yhteenlaskun onnistumaan JavaScriptissä seuraavasti:
summa = luku1 + luku2 - 0
Voit käynnistää Internet Explorer-selaimen VB-sovelluksesta näin:
Dim ie As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
Excel-tiedosto avataan Exploreriin:
ie.Navigate ("D:\taulukot\jukka.xls")
Varmin keino laittaa pysyvät muuttujat talteen JavaScriptissä on laittaa ne www-sivulle johonkin nimettyyn paikkaan esim. DIV-elementtiin.
Voit kirjoittaa mihin tahansa levyllä olevaan tiedostoon, myös Excel-tiedostoon:
Open "xltiedosto.xls" For Output As 1
Print #1, "Jukka Niemi"
Print #1, "Sinikka Niemi"
Close 1
Ensimmäinen Print menee soluun A1 ja toinen Print soluun A2
Jos haluat kirjoittaa Excelin rinnakkaisiin soluihin A1 ja B1, tee seuraavasti:
Print #1, "Jukka" Tab; "Sinikka"
TITLE-attribuutti toimii myös HTML-taulukoissa hyvin:
1. Kaikissa soluissa voi olla eri TITLE
2. Rivillä voi olla rivin TITLE
3. Solun TITLE ohittaa rivin TITLEn
Elementit piiloon:
style="display:'none'" tai
style="visibility:hidden"
Elementit näkyviin:
style="display:''" tai
style="visibility:visible"
Objektimuuttujien määrittelyssä ei voi käyttää indeksejä!
Ei toimi:
Set myItem = omaKansio.Items(i)
Vaan on tehtävä jokainen erikseen:
Set myItem = omaKansio.Items(1)
HTML-sivun vierittäminen ikkunassa:
self.scrollTo(0,0)
HTML-sivun vierittäminen kehyksessä:
parent.frame2.scrollTo(x,y)
Koko HTML-taulukon tai osan siitä pystyy tuomaan Exceliin kopioimalla leikepöydän kautta.
HomeSiten kaikkien esimerkkien HTML- ja Script-koodit löytyvät:
D:\HomeSite4\Help\HTMLReference\ScriptingReference\
ModalDialog-ikkuna on kätevä www-sovelluksissa:
- ikkuna avautuu nopeasti
- ei avaa useita ikkunoita
- ikkunaan voi avata minkä tahansa HTML-sivun, myös pelkän kuvan
- ikkunan voi sulkea clickillä
- ikkunalle voi määrittää koon, esim. dialogWidth:300px
- ikkunaa voi siirtää
- kätevä infoikkunana
- kätevä kirjautumisikkunana
- ikkunasivun kaikki scripti-ohjelmat toimivat siinä!!
Voit lukea tiedot HTML-taulukosta Excel-taulukkoon:
For c = 1 To 5
For r = 1 To 100
Cells(r, c).Value = rows(r-1).cells(c-1).innerText
Next
Next
Kun tiedostoja siirretään FTP-ohjelmalla palvelimelle, pitää internet-yhteys olla auki esim. Internet Explorerilla!
ADODB, ADOR, ADOX tulivat IE 5.0:n mukana
ADO toimi ensi kertaa Excelissä ja www-sivuilla.
ADO Data Control ei vielä toimi!
ADO:n helpit ja referenssit löytyvät:
H:\INETSDK\Installed\Help\ado
SQL-lause:
SELECT * FROM taulu1 UNION SELECT * FROM taulu2
Tietojen haku www-sivulta taulukosta. Taulukko saa olla minkä kokoinen tahansa.
G:\html\Tietojen haku HTML-taulukosta.xls
Easy CD-DA Extractor on ohjelma MP3-äänitiedostojen tekoon ääni-CD:ltä.
hinta 200 mk
HTML-infotaulukossa voi olla:
- vain yksi solu ja siinä paljon tekstiä
- tyhjiä JS-tiedostoja
- useita JS-tiedostoja peräkkäin
Voit ladata tekstejä ja kuvia myös piilossa olevaan DIV-elementtiin, joka otetaan sitten näkyviin kuin ponnahdusikkuna!
MP3-musiikkia pystyy esittämään www-sivulla Windows Media Playerillä, joka tulee Internet Explorer 5.0:n mukana!
Taulun liittäminen tauluun onnistui DAO:lla, mutta ei ADO:lla seuraavasti:
mySQL = "INSERT INTO tilausrek2 SELECT * FROM tilausrek"
myUpdate = myDB.Execute(mySQL)
SELECT * INTO [New Enployees] FROM Employees
Tätä voi käyttää:
- tietueiden arkistointiin
- taulujen varmuuskopiointiin
- kopion vientiin toiseen tietokantaan
- tietyn hetken tietojen vientiin raportteihin
- uuden taulun perustamiseen
Tauluntekokysely, joka perustaa samalla uuden taulun:
SELECT Orders.[Shipped Date], Orders.[Order ID], Orders.[Order Amount] INTO [Temp Table] FROM Orders;
Ei toimi kahta kertaa samaan!
HTML-formin voi tehdä myös HTML-taulukon sisälle!
Koko taulun voit kopioida eli liittää toisen olemassa olevan taulun perään seuraavasti:
INSERT INTO taulu SELECT * FROM Tmp
- erittäin kätevä kokoelmien tekoon ja siirtoihin tilapäistauluista pysyvään tauluun
JavaScriptin taulukkomuuttujalla saadaan suuretkin muuttujamäärät käsiteltyä lyhyellä koodilla:
taulukko = new tee_taulu(3)
taulukko[1] = new kayttaja(1, "minä", "Firma Oy")
taulukko[2] = new kayttaja(2, "sinä", "Company Ltd")
Olion kaikki arvot voidaan tuhota kerralla:
olio = null
VBScript-taulukkomuuttuja voidaan siirtää merkkijonoon VBA:lla seuraavasti:
mj = "taulukko(" & r & "" & c & ") = """ & arvo & """"
jossa
- taulukko = moniulotteisen VBS-taulukon nimi
- r = riviNro
- c = sarNro
Huom. että =-merkin jälkeen on 3 lainausmerkkiä ja lopussa 4 lainausmerkkiä!
Miten saadaan selville, mikä elementti on tapahtuman kohteena:
i = window.event.srcElement.sourceIndex
Sitten tälle elementille tehdään jotakin:
document.all(i).style.backgroundColor = "green"
Hyvä keino kohteiden ruksaamiseen www-sivulla:
document.all(i).innerText = "x"
Voit tehdä merkintöjä myös HTML-taulukkoon!!!
Elementtejä, joihin tapahtumaohjaus vaikuttaa, voit rajata If- ja Select Case-lauseilla!
Voit estää dokumentin latautumisen käyttäjän tietokoneen cachesta eli välimuistista seuraavasti:
Dokumentin HEAD-osaan:
<META HTTP-EQUIV="Expires" CONTENT="0">
Paramtrien välittäminen VBScript-aliohjelmille ei onnistunut ei sitten millään. Seuraava EI toiminut!
<A HREF="vbscript:koe(1)">
Language Reference s.131
Properties:
Col.Count
Methods:
Col.Add
Col.Item
Col.Remove
Print MyCollection(1)
Print MyCollection.Item(1)
object.Add(item, key, before, after)
Voit toteuttaa automaattisesti tietyn ajan kuluttua itsestään sulkeutuvan infoikkunan:
myTimer = window.setTimeout("self.close()", 3000)
Ikkuna sulkeutuu 3 sek. kuluttua!
Uusi objekti voidaan lisätä kokoelmaan argumentteineen VBA:lla:
ActiveSheet.Scenarios.Add
name:="Likely"
changingCells:=Range("A1:C5")
comment:="Menee melko mukavasti"
Funktion parametriksi voidaan sijoittaa:
- muuttuja
- merkkijono
- olio
- toisen function kutsu
Teemme funktio, joka tulostaa halutun sanan suurilla punaisilla kirjaimilla keskelle selainikkunaa.
Määrittelemme ensin funktion:
function iso_pun_banner(teksti){
document.write("<CENTER><FONT SIZE=+4 COLOR=RED>" + teksti + "</FONT></CENTER>");
Voimme saman tien kutsua funktiotamme:
iso_pun_banner("Hello World!")
Omien olioiden luonti:
1. Kirjoita olion muodostin eli luontifunktio:
function henkilo(nimi,ika,ammati){
this.nimi = nimi
this.ika = ika
this.ammatti = ammatti
}
2. Valmista uusi olio eli luo oliosta uusi esiintymä eli instanssi:
poika = new henkilo("Pekka",15,"koululainen")
3. Käytä oliota:
x = poika.ammatti
4. Oliolle voit lisätä ominaisuuksia ja metodeja:
- metodi eli funktio pitää määritellä scriptissä aikaisemmin
- metodi liitetään olioon lisäämällä se muodostimeen:
this.naytaIka = naytaIka
5. Voit nyt käyttää olion ominaisuuksia ja metodeja, mutta myös oliokokoelmaa eli arrayta käymällä sitä läpi for- tai with-loopin avulla.
1. Käytettyjen autojen myyntiesittely merkeittäin
2. Kiinteistönvälitys asuntotyypeittäin/paikkakunnittain
3. Lomamökkiesittely
4. Osaajien esittely
5. Asiantuntijapörssi
6. Kirpputori
7. Huutokauppatori
Voit asettaa kohdistimen valmiiksi tekstiboxiin tai mihin tahansa elementtiin JavaScriptillä:
forminNimi.boxinNimi.focus()
Muista sulut! JavaScriptin metodeissa (funktio!) on aina sulut!
Tekstielementillä file tai FileUpload käyttäjä voi lähettää koneeltaan tiedoston palvelimelle (JS s.168).
file avaa valintaikkunan tiedoston hakua varten. Valittu tiedosto lähtee "Submit"-painikkeella lomakkeen muiden tietojen mukana palvelimelle. Lähetettävää tiedostoa EI kuitenkaan voi kirjoittaa koodiin, vaan tiedosto on aina käyttäjän valittava itse, mikä on huomattava puute!
VBScriptin Select Case -rakennetta vastaa JavaScriptissä switch-rakenne:
switch (sek){
case 1: alert("1 sekuntti on kulunut");break;
case 2: lause;lause;
case 5: lause
Funktio, joka pyöristää luvut kahteen desimaaliin:
function round(luku){
return Math.round(luku * 100) / 100
}
C:\Tool_95
Kappaleen keston sekuntteina saat selville ActiveMovie-kontrollista JS-koodilla:
kesto = AMovie.duration
Äänitiedostoja voit soittaa www-sivulla EMBED-elementistä. EMBED-ääniä voi myös ohjata koodista:
wav.play()
wav.stop()
midi.play()
midi.stop()
EMBED:illä voi soittaa myös useita wav-ääniä yhtä aikaa ja MP3-äänitiedostoja!
Sovellus musiikkikohtien merkkaamiseen kommenteilla Excel-taulukkoon:
D:\esitys\Ajan merkkaaja.xls
SQL-kyselyjen päivämääräehdoissa on käytettävä DateValue-funktiota:
Pvm >= DateValue('vkAlku')
XML:llä voidaan data pitää erillään HTML:stä.
XML:llä voidaan dataa varastoida myös HTML-dokumenttien sisälle "datasaarekkeina".
XMl:ää voidaan käyttää vaihtamaan dataa erityyppisten sovellusten välillä.
XMl:ää voidaan käyttää varastoimaan dataa tiedostoihin ja tietokantoihin
XML on kehitetty kuvailemaan dataa ja siinä keskitytään siihen, mitä data on.
HTML on kehitetty näyttämään dataa ja siinä keskitytään siihen, miltä data näyttää.
HTML:ssä on kyse informaation näyttämisestä, XML:ssä informaation kuvaamisesta!
Excelistäkin löytyi XML eli Microsoft XML, version 2.0
Voit jakaa merkkijonon kätevästi osiin JavaScriptin split-funktiolla, jonka syntaksi on:
arrayOfStrings = Mj.split(separator,limit)
jossa
arrayOfStrings = taulukko eli Array, johon merkkijonon palaset kerätään
Mj = paloiteltava merkkijono
separator = erotinmerkki, jolla osaset on erotettu toisistaan
limit = rajoitin, eli montako palasta otetaan
Esim:
aOfMj = Mj.split(";")
Kaikki palaset otetaan ja erottimena on käytetty puolipistettä!
Voit tyhjentää aikaisemman HTML-sivun sisällöstä:
Esim:
parent.kauppa.document.open()
parent.kauppa.document.write('<BODY COLOR="WHITE">')
parent.kauppa.document.close()
Jotta desimaaliluvut tulisivat Excelin UserFormilta lukuina Excelin taulukkoon, pitää VBA:ssa muuttujat alustaa Doubleksi ja tyhjät tekstiboxien arvot käsitellä!
Excelin UsedRange antaa vääriä tuloksia, koska se ottaa mukaan myös niitä rivejä, joita on muotoiltu, mutta joissa ei ole arvoja.
On parempi käyttää nykyisen taulukkoalueen selvittämiseen CurrentRegion-menetelmää:
Valitaan ensin joku solu alueelta:
Cells(1,1).Select
riveja = Selection.CurrentRegion.Rows.Count
1. Sijoita kaikki HTML- ja JS-tiedostot suoraan juureen
2. Sijoita kuvatiedostot juuren alle alihakemistoon "kuvat", jolloin toimiva polku merkitään koodissa kuvat/
Tilauksen lähettäminen HTML-formilta:
<FORM NAME="tilauslomake" onSubmit="return Laheta();" ACTION="http://www.pponetti.com/cgi-bin/postita2.cgi" METHOD=post>
function Laheta(){
if(document.tilauslomake.nimi.value == ""){
alert("Jotakin")
return false //Submit-tapahtuma keskeytetään
Huom: ASP-sivut eivät toimi PPO:n Solaris-palvelimella!
ClothingBox-verkkokauppaohjelma valmis. Ohjelman esittely Kauppiksella loppuseminaarissa!
Ongelman ratkaisukeinoja:
1. Yksinkertaistaminen
2. Ongelman erityispiirteiden tunnistaminen
3. Äärimmäisyyksien tarkastelu
Inspiraatio tarkoittaa mahdollisuuksien oivaltamista.
Herkisty huomaamaan yksityiskohdat!
Tietojen siirto toiselta www-sivulta toiselle:
location.href
location.search
Esim:
G:\eKauppa\ekaSivu.html
G:\eKauppa\301.html
Jos tehdään sijoitus a=b, niin a:n sisältämän olion jokaiseen attribuuttiin kopioidaan b:n sisältämän olion vastaavan attribuutin arvo eli b:n sisältämän olion tila sijoitetaan a:n sisältämään olioon!
Esim:
tuote[0] = tilaus[1]
Voit sijoittaa kuva-olion HTML-koodiin:
<IMG src=&{kuva1.src}
Voit tuoda tieotoa olion ominaisuuksiksi arrayhin seuraavasti:
var hlo = new Array()
hlo[1] = {nimi:"Jukka", alue:"P-S", myynti:""}
hlo[2] = {nimi:"Pekka", alue:"I-S", myynti:""}
Ominaisuuden myynti arvot voidaan tuoda myöhemmin erillisenä (eri lista/eri listat):
hlo[1].myynti = 1000
Voit tuoda myös kokonaan uusia ominaisuuksia ja niiden arvoja:
hlo[1].arvio = "Tehokas myyjä"
Olion ominaisuuslista ei saa päättyä pilkkuun!
Euron symboli HTML-kielessä on MIKÄ?
Voit sijoittaa useiden arrayiden tiedot eli alkiot sekaisin:
Määritellään ensin kaikki arrayt:
var aika = new Array()
var kuva = new Array()
var aihe = new Array()
aika[1] = 10
kuva[1] = "Img0063.bmp"
aihe[1] = "Iltarusko"
Tällä menetelmällä voit korvata oliot ominaisuuksineen!
Voit toteuttaa "multiarrayn" myös VB:ssä ja vieläpä määritellä eri tietotyypit:
Dim id(10) As Integer
Dim tuote(10) As String
Dim hinta(10) As Currency
id(1) = 101
tuote(1) = "Maito"
hinta(1) = 0.60
Taulukon voit tehdä myös seuraavasti:
i = 1
id(i) = 101
tuote(i) = "Maito"
i = 2
jne...
1. Oliot tietovarastoina
2. JS-tiedostojen teko ja käyttö
3. Dynaamisten sivujen ajo lennosta (infosivut)
4. Monipuoliset linkit:
infosivu, info, kuva, ei linkkiä
5. Monipuoliset valintalistat:
- yksi, monta tai ei yhtään vaihtoehtoa
- kolmas ulottuvuus HTML-taulukoihin split()-funktiolla
- yksilöllisten kokojen ja värien esittäminen valintalistoissa
6. Dynaamiset multibannerisovellukset
7. Määrätietojen antaminen painikkeilla
CSS-tyylisivuilla pystyt antamaan HTML-sivuille haluamasi yksilölliset marginaalit
Sain olio-arrayn lajittelun toimimaan, myös numeroiden lajittelu toimi oikein:
G:\html\sortOlioArray.html
Yleinen syntax:
arName.sort(compareFunction)
Esim:
arName.sort(byName)
compareFunction:
function byName(a, b){
var anew = a.name.loLowerCase()
var bnew = b.name.toLowerCase()
if (anew < bnew) return -1;
if (anew > bnew return 1;
return 0;
}
Käytä isojen arrayiden indeksoinnissa seuraavaa kätevää tapaa:
var ar = new Array()
ar[ar.length] = "Alkio1"
ar[ar.length] = "Alkio2"
Menetelmällä voit helposti:
- poistaa alkioita välistä
- lisätä alkioita väliin
Voit suodattaa olio-arrayn if-lauseen ja apu-arrayn avulla. Apu-arrayta käytetään poimintatuloksen tallentamiseen. Apu-arrayta voit laajentaa dynaamisesti, aluksi siinä tarvitaan vain yksi tyhjä alkio.
Array "tyhjennetään" eli poistetaan:
apu = null
Uusi alkio eli "rivi" tietueoliota varten lisätään:
r++
apu[r] = {}
Usko on elävää silloin, kun se kumpuaa omasta avuttomuudesta.
Syvyydestä minä huudan sinua Herra!
Sisäinen menestys on sitä, että elää omaa elämäänsä, oman itsensä muotoista elämää, tuntee omat tarpeensa, lahjansa ja haaveensa.
Oleminen on ponnistelemattomuutta, rauhallista tietoisuutta siitä, että elämässä on apikka minulle sellaisena kuin olen.
Sisäinen menestys tarkoittaa sitä, että ihminen alkaa yhä enemmän elää omaa elämäänsä.
Elämä on lahjaa.
Kaikki aika on armonaikaa.
Minkäänlaisilla saavutuksilla tai teoilla ei voi saavuttaa hyvää elämää. Hyvä elämä löytyy heikkouden suunnasta.
Voit määritellä funktioita kolmella eri tavalla:
1. Perinteinen
function nimi(parametrit) {lauseet}
2. Inline ilman nimeä
muuttuja = function(parametrit) {lauseet}
3. Rakentamalla sen Function-funktiolla
muuttuja = new Function(parametrit, body)
Funktion argumenttien määrän saat selville:
function.arguments.length
joka toimii vain function sisältä, ei funktion ulkopuolelta!
Ison arrayn eli taulukon voit tyhjentää kätevästi seuraavasti:
1. Katkaistaan vanha array ja poistetaan siitä ylimääräiset alkiot
arName.length = 1
2. Tyhjennetään ainut alkio
arName[0] = {id:"", nimi:"", ...}
tai
arName[0] = {}
zIndexin oikea syntaksi
HTML-elementin sisällä:
style="z-Index:1"
JS-koodissa:
obj.style.zIndex = 1
Voit antaa usealle objektille saman ID-arvon, jolloin niistä muodostuu automaattisesti array, jonka alkioihin voit viitata indeksillä!!
Saat koordinaatit kuvan yksityiskohdista talteen päällä olevaan läpinäkyvään HTML-taulukkoon:
G:\html\hiiren xy talteen.html
Henkilörekisterin kunta-kenttä (=poimintaehtokenttä) ajettiin HTML-sivulle DIV-elementtien ID-arvoksi ja henkilörekisterin nro-kenttä DIV-elementtien uudeksi nro-attribuutiksi, jolla sitten saadaan yhteys henkilön kaikkiin muihinkin ominaisuuksiin!
Moniulotteinen array toimii JavaScriptissä näin:
var hlo = new Array()
var hlo[1] = new Array()
var hlo[2] = new Array()
Ensimmäinen tapa indeksinumerolla:
hlo[1][1] = "101"
hlo[1][2] = "Jukka Niemi"
hlo[2][1] = "102"
hlo[2][2] = "Sinikka Niemi"
Toinen tapa merkkijonoindeksillä:
hlo[1]["nro"] = "101"
hlo[1]["nimi"] = "Jukka Niemi"
Kolmas tapa olion ominaisuuksilla:
hlo[1].nro = "101"
hlo[1].nimi = "Jukka Niemi"
Objektit valmiina asemoituna piilossa, josta ne esitetään.
Monikerroksiset ratkaisut:
- kerrokset valmiiksi rakennettuna piilossa
- haluttu kerros näytetään
Tietojen keruu "päällyskerroksessa" olevaan taulukkoon:
- tietojen tulostus taulukosta
- tietojen kopiointi taulukosta muihin sovelluksiin
Hyvä keino olemassa olevan arrayn tyhjentämiseksi on ensin katkaista se eli muuttaa sen pituutta:
arName.length = 1
Sitten voit tyhjentää sen seuraavasti:
arName[0] = {}
Kirjastokimppa:
kirikimppa.haapajärvi.fi
Alueellisen tiedon virtuaaliverkko:
www.kirjastovirma.net
- kuva monistuu tekstin ja grafiikan alle koko sivulla
- toimii vain BODY-elementin kanssa
TABLE.background
- määrittelee taustakuvan taulukolle
- kuva monistuu tekstin ja grafiikan taakse taulukoissa, taulukon otsikoissa tai taulukon soluissa
- käytetään elementeissä TABLE, TD, TH
var hlo = new Array()
//Tehdään tyhjiä olioita
for (i=1;i<11;i++){
hlo[i] = {}
}
//Annetaan oliolle ominaisuuksia
hlo[1].nro = 1
hlo[1].nimi = "Vuotikka Jussi"
Voit alustaa JS-arrayn kolmella tavalla:
1. var arname = new Array()
2. var arname = []
3. var arname = {}
Voit tehdä näillä tavoilla myös:
- moniulotteisen arrayn
- olio-arrayn
parseInt muuntaa merkkijonon numeroiksi
Esim:
parseInt("12abc") = 12
eval-funktiolla voit tehdä merkkijonoista toimivia olioita.
Esim:
eval("kirja[1]." + valinta)
Tässä "valinta"-muuttuja on listalta valittu olion ominaisuus eli attribuutti esim. ominaisuus ryhmä tai nimike.
Merkkijonoja voidaan käsitellä kahdella tavalla:
1. StringObj.method
2. "String Literal".method
2. Saadakseen ratkaisun ongelmaansa
2. Ei rahaa
3. Ei kiirettä
4. Ei halua
5.Ei luottamusta
Tietojen siirto Excel-taulukosta sähköpostiviestiin ja siirto takaisin viestistä taulukkoon:
D:\Työt\Tietojen kirjoitus emailiin.xls
Ratkaisu:
Solun osoitteen ja sisällön kirjoitus emailin body-osaan ja luku takaisin Excel-taulukkoon.
Liitetiedosto voidaan lisätä sähköpostiviestiin seuraavasti:
myItem.Attachments.Add "polku"
jossa polku = hakupolku + tiedostonimi
Sähköpostiviestit voidaan lukea Outlookista myös nimen avulla:
Set myItem = omaKansio.Items("Viestin aihe")
Voit syöttää Excel-taulukon tietoja myös suoraan sähköpostiviestin body-osaan seuraavasti:
A1=Jukka (rivinvaihto)
B1=Sinikka (rivinvaihto)
C1=Tuula (rivinvaihto)
Muista rivinvaihto myös viimeiselle riville!
Voit muuttaa tekstiboksissa annetun pilkun desimaalipisteeksi Exceliä varten seuraavasti:
Mid(mk. InStr(1, mk, ","), 1) = "."
pvm = Mid(pvm, 4) 'poistaa 3 merkkiä
Tabulaattori eli Tab-merkki on VB:ssä Chr$(9)
Excelin UserFormin ListBox ja ComboBox "säilyttävät" arvonsa, kun sille valitaan jokin arvo suunnittelutilassa, jolloin arvo näkyy myös Properties-ikkunassa.
Esim:
Text = 22
Value = 22
Soluosoitteen ja solun sisällön lukeminen Excel-taulukosta MikroPuheella.
Nimettyjen solujen ja niiden sisältöjen lukeminen MikroPuheella.
D:\Työt\Puhu soluja.xls
Asiakaskohtaisten web-sivujen ajo lennosta kehykseen. Kysytty asiakastunnus määrää haettavan JS-tiedoston ja sivun sisällön:
src = " ' + asTunnus + '.js">'
Palvelimella oleva hakemisto kannattaa suojata index.html-tiedostolla, jolloin kutsumattomat vieraat eivät pysty näkemään sen sisällysluetteloa eivätkä katselemaan sen tiedostoja!
Solualueen tyhjennys arvoista siten, että kaavat jäävät jäljelle:
For Each c in Range( )
mj = c.Formula
alku = Left(mj), 1)
If alku <> "=" Then
c.Value = ""
End If
Next
Saat lasketuksi summia kätevästi nimettyjen alueiden ulkopuolelta OFFSET-funktion avulla:
= SUM(OFFSET(alue;rows;cols;h;w))
D:\Inno\Summa-kaavat aluenimillä.xls
Nimettyjen alueiden käyttö helpottaa koodin kirjoittamista. Nimetty alue on oma objekti, jolla on omat ominaisuudet, kuten Cells, Rows, Columns, Rows.Count
Esim:
Range("vaihtoehdot").Cells(3).Select
Koodilla valitaan listalta vaihtoehto nro 3.
OFFSETilla voidaan ottaa ulos tietoja nimetyn alueen viereisistä sarakkeista!
Nimetyn alueen käyttö Excelissä korvaa Arrayn eli VBA:n taulukko-muuttujan käytön!
Voit antaa aluenimen kaavaan myös viittauksena INDIRECT-funktion avulla.
Voit määrittää OFFSETilla dynaamisesti, minkä sarakkeen summa milloinkin lasketaan:
= SUM(OFFSET(alue;;cols;;1))
For Each c In ohjelma.Sheets(1).Range(alue)
Tässä alue oli se johon kirjoitetaan.
For Each ei toiminut silloin, kun yritin niin päin, että josta kirjoitetaan!
Jokin alue ilmaistaan VBA-koodissa:
Range(A1:B2) tai [A1:B2]
Jokin sarake ilmaistaan:
Columns(A) tai [a:a]
For Each -rakennetta kannattaa käyttää yhdestä sarakkeesta käsin moneen sarakkeeseen.
Sitä ei kannata käyttää isoilla monen sarakkeen alueilla, koska se silloin voi toimia väärin ja toimii erittäin hitaasti!
Voit välittää HTML-elementtien mukana monipuolista tietoa käyttäjille ilman tietokantaakin omien HTML-attribuuttien avulla:
<IMG id="1" src="kuvat/Img0010.jpg" text1="Iltahetki" text2="Kuva 1" title="Iltahetki mökillä" onclick="kuva(this)">
function kuva(valinta){
image = valinta.src
text1 = valinta.text1
alert(text1)
}
Voit vaihtaa lukujen etumerkin Excelissä ja VBA-koodilla, jakamalla luvut -1:llä!!
Excel-taulukon tyhjennys siten, että kaavat ja muotoilut säilyvät:
Range().SpecialCells(xlCellTypeConstants, 23).ClearContents
XML-tiedostojen käsittely ja katselu onnistuu myös Excelissä ja VB:ssä.
Voit katsella XML-tiedostoja kätevästi suoraan MsgBox-huomautustaulusta!
Sovellusten välinen tiedonvälitys webin kautta onnistuu kätevästi yksilöllisillä XML-elementeillä esim. seuraavasti:
<TILAUSNUMERO>
<ASIAKASNUMERO>
XML Data Source Object on XML-elementissä itsessään. Tiedon sitominen eli Data Binding DSO:lla onnistuu sillä hienosti, mutta sillä ei voi kuitenkaan lajitella eikä suodattaa suoraan tietuejoukkoa.
Saat poimittua erilleen ne solmut, joissa on tietty attribuutin arvo seuraavalla JS-koodilla:
var selectedElems = root.selectNodes("CD[TITLE/@id='jukka']")
Yleispätevä ja helppo poiminta JS-Arraysta eli oliosta.
Poiminta perustuu IF-lauseen käyttöön ja poimintatuloksen keräämiseen merkkijonoksi.
for(i=0; i<tuote.length-1;i++){
if(tryhma==tuote[i].ryhma || tryhma== "")
mj = mj + '<TR>'
mj = mj + '<TD>' + tuote[i].id + '</TD>'
Koodissa || = JS:n tai-operaattori
Koodissa poimitaan tietyn tuoteryhmän tuotteet tai kaikki tuotteet eli ""
Skandit onnistuvat XML-tiedostossa kun:
1. Kirjoitat skandit Notepadilla eli Muistiolla
2. Kirjoitat XML-tiedoston ensimmäiselle riville: encoding="ISO8859-1"
Jos Arrayn kaikissa olioissa ei ole samat attribuutit eli olion ominaisuudet, voit ohittaa puuttuvat attribuutit ohjelmaloopeissa seuraavasti:
if(x != null){
alert(tuote[i].kuvaus
}
Tällä menetelmällä vältät kiusalliset virheilmoitukset loopeissa!
Tyhjä ominaisuus antaa siis arvon null JavaScriptissä.
Voit lisätä JS-koodilla olioihin täysin uusia ja yksilöllisiä attribuutteja.
Voit tällä tavalla olio-array-sovelluksessa valita tietueita merkkausattribuuttien avulla seuraavasti:
tuote[2].merkki = "x"
HTML-taulukon rivi piilotetaan JS-koodilla:
taulu.rows(1).style.display = 'none'
Rivi näytetään jälleen:
taulu.rows(1).style.display = ''
XML toimi hyvin myös VB4.0:ssa. Voit Microsoft.XMLDOM:in avulla tuoda XML-materiaalia VB-ohjelmiin!
CSS-tyylien käyttö ei ole rajoitettu vain HTML-sivujen STYLE-attribuutteihin. Niitä voidaan käsitellä myös skriptin kautta. Tämä mahdollistaa tehokkaan keinon tyylien vaihtamiseen dynaamisesti lennosta www-sivuilla!
Saat tiedot suoraan merkkijonona XML-tiedoston osista osan xml-ominaisuuden avulla seuraavasti:
mj = xmlDoc.childNodes(1).xml
Tällä koodilla saadaan xml-dokumentin toisen lapsisolmun sisältö merkkijonona.
Voit tuoda HTML-sivulle useita erilaisia tyylisivuja valmiiksi. Voit kytkeä tyylit päälle ja pois dynaamisesti tyylisivun disabled-ominaisuuden avulla.
disabled = true, jolloin tyylisivu on pois käytöstä
disabled = false, jolloin tyylisivu on käytössä
Voit muotoilla XML-tiedoston tiedot helposti esitysmuotoon CSS-tyylitiedoston avulla.
Voit muotoilla XML- ja HTML-sivuja elementtien ID-numeroiden ja ID-nimien tai luokkien (CLASS) avulla yksilöllisesti esim. näin:
td.#1
div.#1
.luokkanimi
P.#YLÄOSA
Kun tuot XML-tietoja merkkijonona loadXML-metodilla www-sivulle, pitää XML-määrittely eli rivi 1 jättää merkkijonosta pois!
Pidä työtiedostot omissa hakemistoissaan ja kopioi kokonaisia hakemistoja kerralla.
Nopein tapa ottaa varmuuskopioita:
1. Käynnistä Resurssienhallinta
2. Valitse Lähetä
3. Valise DirectCD Drive(I)
00:00:30.500
Mahtava multimediaohjelma:
G:\html2002\kuvaAaniShow1.html
Tietolähde: tapahtumat.js
var t = new Arrray()
//t = tapahtuma
t[0] = 'alkukuva'
t[3] = 'alkuteksti'
t[9] = kuvateksti, seuraava kuva
t[10] = kuvatekstin värin vaihto
t[14] = seuraava kuva
Alkion indeksiluku tarkoittaa tapahtuman toteutusaikaa sekuntteina!
G:\html2002\tapahtumat.js
var t = new Array()
//Esitetään alkukuva
t[0] = 'kuva.src = "Img0015.bmp"'
//Annetaan otsikon väri ja annetaan alkuotsikko
t[3] = 'otsikko.style.color = "gold"otsikko.innerText = "Esityksen nimi"'
//Poistetaan alkuotsikko ja vaihdetaan kuva
t[9] = 'otsikko.innerText = "" kuva.src = "Img0018.bmp"'"
Huomaa, että arrayn indeksi i huolehtii esityksen ajastuksesta sekuntteina.
eval-funktio suorittaa merkkijonona olevan JavaScript-koodin eli minkä tahansa JS-lauseen.
Lauseet voidaan antaa ohjelman ulkopuolelta!!!
JS-komentoja voidaan välittää merkkijonoina emaililla ja merkkijonot toteuttaa JS:n eval-funktiolla.
Esim:
mj = 'kuva.src = "/bmp/Img0015.bmp"'
eval(mj)
Digitaalikelloon perustuva ajastin, joka toteuttaa JavaScript-lauseita:
G:\html2002\ajastin.html
Pidä aina erillään dokumentin
- datasisältö eli XML-data tai JS-Array-data
- rakenne eli HTML
-ulkoasu eli CSS
Lomakkeiden suunnittelu on kätevää HTML:ssä. Voit antaa lomakkeen elementeille oikeat mitat esim. cm tai mm. Pienin mitta oli kuitenkin h = 5 mm!
Voit antaa HTML-tekstin sekaan mitä tahansa JavaScriptillä toteutettavia komentoja.
Esim:
<a href=javascript:lause1;lause2>
Linkki ei vie minnekään, mutta toteuttaa Javascript-lauseet!!
TDC-kontrollia eli Tabular Data Controllia käytetään www-sivulla sitomaan CSV-tietokanta HTML-taulukkoon.
CSV-tiedostoissa sarakkeiden erottimena käy mikä tahansa välimerkki eli pilkku, puolipiste, tab, pystyviiva, matomerkki jne. Paras näistä on yleensä puolipiste.
Saat skandit toimimaan lajitteluissa, kun asetat TDC:n CharSet parametrin arvon skandeille sopivaksi eli
TDC.CharSet = "ISO8859-1"
Poimittaessa TDC-kontrollilla päivämääräehdoilla, pitää poimintaehdoissa vuosiluku antaa 2-numeroisessa muodossa esim:
ehto = "pvm < 17.7.47"
Hieno näyttötaulusysteemi hissitoiminnolla:
G:\html2002\vapaussoturitJS.html
Tietojen näyttö kuvaruudulla mahdollisimman isoilla fonteilla. Tietojen selaus ja haku tietokannasta.
Muuttujien määrittely:
Dim , var
Objektimuuttujien alustus:
Set, var
Objektien luonti:
VB: Set obj = CreateObject()
JS: var obj = new ActiveXObject()
Hakemistopolut:
\ \ , / /
Kommentit:
, //
Metodit:
VB: RS.Open Source, Connect
JS: RS.Open (Source,Connent);
Viestit:
VB: MsgBox "viesti"
JS: alert("viesti")
Merkkijonojen liittäminen:
VB: &
JS: +
ADO.Recordsetin GetString() on erittäin tehokas ja nopea menetelmä tietojen hakemiseen tietokannoista www-sivulle taulukkoon ja muuallekin.
347 rivin tietokannan haku kesti:
TDC:llä 10-15 sek
ADO:lla 4 sek
Voit rajata SQL-kyselyllä HTML-taulukkoon tulevien sarakkeiden/kenttien ja myös rivien määrää.
Sarakemäärää rajataan SELECT kohdan kenttäluettelolla ja rivimäärää
TOP avainsanalla.
Esim:
SELECT TOP 10 nimi,osoite FROM taulu
ADO:lla kannattaa tuoda kaikki materiaali www-sivuille:
-valintalistojen sisällöt
- taulukot
- Arrayden sisällöt
ADO mahdollistaa SQL:n tehon lajitteluissa ja poiminnoissa!
ADO on nopea!!!
Lyhyt ja helppo koodi!
Excelin VBA:n Wait()-ajastus on epävakaa ja kaataa helposti Windowsin. FXTimer on vakaampi. Ajanmerkkaajassa on käytetty sitä UserFormilla!
Tehty sekunttiajastin uusiksi:
D:\Työt\Kuva_sek.xls
- ajastimena FXTimer UserFormilla
- käyttö pieneltä UserFormilta
Paras, monipuolinen, yksinkertainen ja yleispätevä kuvaesitys:
D:\Työt\Sekunttiesitys050602.xls
- ajastimena FXTimer
- ajastin UserFormilla
- esitys ja käyttö koko ruudun UserFormilta
- yksi esitys yhdessä taulukossa
- monta esitystä yhdessä työkirjassa
Miten tehdään vielä parempia ohjelmien käynnistysvalikkoja Excel-taulukkoon:
osoite = ActiveCell.Address
koodi = Sheets(2).Range(osoite).Value
Run koodi
Tällöin selkokielinen valikko voi olla sivulla 1 ja ajokomennot samanrakenteisella sivulla 2
Turhat tiedot poistetaan seuraavasti:
taulu1.rows(i).cells(0).innerHTML = ""
taulu1.rows(i).cells(1).innerHTML = ""
XML-elementeissä eli tageissa EI saa olla skandeja!
XML-elementit piti olla isoilla kirjaimilla!
Rivin väri keltaiseksi:
<SCRIPT FOR=rivi EVENT=onmouseover>
TDC.recordset.AbsolutePosition = this.recordNumber;
taulu.rows[TDC.recordset.AbsolutePosition].style.backgroundColor = 'yellow'
</SCRIPT>
Värin palautus entiseksi:
<SCRIPT FOR=TDC EVENT=onrowexit>
TDC.recordset.AbsolutePosition = this.recordNumber;
taulu.rows[TDC.recordset.AbsolutePosition].style.backgroundColor = ''
</SCRIPT>
Hiiritapahtumat eri tilanteissa:
1. Hiiren kulkiessa rivin päälle EVENT=onmouseover
2. Hiirellä klikattaessa EVENT=onclick
3. Hiiren kulkiessa riviltä pois EVENT=onrowexit
TDC-taulukkoon EI voinut lisätä hyperlinkkejä ajamalla kuten ei-sidottuun taulukkoon on mahdollista!
1. Käytä muuttujaa ensin funktiossa kuten paikallista muuttujaa:
function count(){
counter++
alert(counter)
}
2. Määrittele staattinen muuttuja asettamalla se funktion ominaisuudeksi ja antamalla sille arvo:
count.counter = 1
Funktio pitää olla ensin ja määrittely vasta sitten!!
for in -lause on erittäin kätevä minkä tahansa oudon olion ominaisuuksien nimien selvittämiseen.
for in -lauseen syntaksi on seuraava:
for (ominaisuus in olio){
lauseet
}
Esim. tuote-arrayn kentät:
for(ominaisuus in tuote[1]){
om[i] = ominaisuus
alert(om[i])
i++
}
Luokkanimeksi käy myös pelkkä numero:
<STYLE>
.4 {}
</STYLE>
data = tuote[i][ominaisuus[j]]
ar = ar1.concat(ar2)
Script-elementitkin voi nimetä id-attribuutilla, jolloin sille voi antaa myös src-ominaisuuden arvon koodissa:
<SCRIPT id="s1"></SCRIPT>
<SCRIPT>
s1.src = "*.js"
Systeemi olioiden käsittelemiseksi yksin nimellä ja yhdessä arrayssa:
G:\html2002\oliotArrayssa.html
nivala = {ominaisuusluettelo}
var ti = new Array()
ti[1] = nivala
Huomaa, että nivala on olio eikä merkkijono.
nivala-olio on liitetty ti-arrayhin ensimmäiseksi alkioksi!
Voit kytkeä minkä tahansa tekstitietokannan lennosta TDC-kontrolliin seuraavasti:
TDC.DataURL = "*.csv"
jossa * on mikä tahansa tiedostonimi hakupolkuineen
Keinot varmistaa lukuisia kauppoja:
1. Riittävä määrä kontakteja
2. Riitttävä määrä myyntikeskusteluja
3. Riittävä määrä kaupanpäätösehdotuksia
1. Usko omiin mahdollisuuksiin
2. Myönteisyys
3. Päättäväisyys, päämäärätietoisuus
4. Luovuus
5. Empatia ja kyky ymmärtää erilaisuutta
6. Ahkeruus ja tehokkuus
7. Uskollisuus työnantajaa kohtaan
8. Yhteistyökyky
TH-elementtejä voi HTML-taulukossa olla useammassa rivissä eli:
rivi1: Taulukon otsikko
rivi2: Sarakkeiden otsikot
rivi3: Sarakkeiden yksiköt
Voit lähettää sähköpostin välityksellä monenlaisia hyödyllisiä tietoja yhteistyökumppaneillesi:
1. Sähköpostiviestejä
2. Liitetiedostoja
3. Merkkijonoja
4. XML-tiedostoja
5.Tilauksia merkkijonoina
6. Komentoja merkkijonoina (EVAL)
7. Asiakaskyselyjen vastauksia
8. HTML-lomakkeiden palautuksia
Tietojen lähetys- ja vastaanottokäsittely on helppo automatisoida.
Serveriä ja serveripuolen ohjelmointia EI tarvita!!
Uusi, parempi tapa lähettää sähköpostiviesti ja liitetiedosto automaattisesti Excelistä Outlookilla:
D:\Työt\Läketä liitetiedosto.xls
Set olApp = GetObject("", Outlook.Application)
Set uusiViesti = olApp.CreateItem(olMailItem)
uusiViesti.To = "Vastaanottajan sähköpostiosoite"
uusiViesti.Subject = "Viestin aihe"
Viestiosassa lähetettävä merkkijono
uusiViesti.Body = mj
Set myAttachments = uusiViesti.Attachments
Lisätään liitetiedosto
myAttachments.Add "polku\tiedosto", olByValue, 1, "Nimike"
Lähetetään viesti Outlookiin odottamaan lähetystä sieltä
uusiViesti.Send
Outlookin ei tarvitse tässä menetelmässä olla auki!
Uusi tyhjä työkirja avataan Excelissä koodilla:
Workbooks.Add
Voit lukea ja kirjoittaa arvot ja kaavat Excel-taulukon soluista:
Cells(r, c).Formula
jossa r = rivin nro ja c = sarakkeen nro
Tietojen tallennus selaimesta tietokoneen kovalevylle on yleensä estetty tietoturvallisuussyistä.
Voit kiertää tämän rajoituksen tekemällä "välitallennuksen" emailiin kirjoittamalla tiedot sähköpostiviestiin, jota ei lähetetä, vaan joka siirretään tiettyyn kansioon. Kaikki emailiin viety on pysyvästi tallessa kovalevyllä!!
Saat selville käyttäjän kuvaruudun koon eli mitat seuraavasti:
x = screen.width
y = screen.height
Excelillä tehdyn CSV-tiedoston oikeellisuus ja toimivuus kannattaa varmistaa seuraavasti:
Oikean reunan "eheyden" varmistamiseksi taulukkoon lisätään viimeiseksi yksi ylimääräinen kenttä esim. "Loppu" ja sen jokaiselle riville jokin arvo esim. "x". Silloin kaikki tarvittavat sarake-erottimet eli puolipisteet tulevat mukaan ja oikein!
Voit hienosäätää komentopainikkeen koon tarkalleen alla olevan taulukon solun kokoiseksi:
Set c = Cells(1,1)
With CommandButton1
.Top = c.Top
.Left = c.Left
.Height = c.Height
.Width = c.Width
End With
Voit lisätä kaikkiin HTML-elementteihin omia attribuutteja eli muuttujia dynaamisesti lenneosta koodilla ja käyttää tätä tietojen tallennukseen ja lukemiseen.
Voit käyttää tätä hyväksi:
1. Muuttujien pysyvään tallennukseen
2.Tietojen siirtoon kehyksestä toiseen
3. Käyttäjän valintojen tallentamiseen
4. Ostoskorin sisällön tallentamiseen
5. Etuna, että valintatiedot pysyvät piilossa muilta käyttäjiltä!!
Esim:
<DIV id=1 mu1="" mu2="" mu3="">
Asetetaan muuttujalle mu1 arvo:
1.mu1 = "Jukka"
MSXML:n nodeFromID()-metodi löytää nopeasti solmun dokumenttipuusta ID-arvon perusteella!!
Inside XML -kirja, s.660
<xsl:template match = "id('Christine')">
<H3><xsl:value-of select = "." /></H3>
<xsl:template>
Inside XML -kirja, s.660
<xsl:template match = "ELEMENTTI">
<xsl:value-of select = "." />
<xsl:text> Tekstiä </xsl:text>
<xsl:value-of select = "@ATTRIBUUTTI"/>
</xsl:template>
G:\html2002\cd_filter_attrib.html
Attribuutin asettaminen ja arvon antaminen dataan eli Data Islandiin koodilla:
selectedElems.setAttribute("id", "arvo")
jossa id=attribuurin nimi ja arvo= saman attribuutin arvo
Attribuutin luku Data Islandista:
selectedElems.getAttribute("id")
Voit lisätä myös tyhjiä attribuutteja:
setAttribute("jukka", "")
ja suodattaa niillä:
selectNodes("CD[@jukka]")
Saat koko merkatun elementin eli tietueen sisällön XML-muodossa:
selectedElems.xml
Saat koko XML-tiedoston merkkijonona:
xmlDoc.xml
XML-elementtiin annetaan uusi tekstisisältö tai entinen teksisisältö vaihdetaan:
selectedElems = root.selectNodes("CD").item(0).childNodes.item(0)
selectedElems.text = "Merkkijono"
Uusi lapsisolmu lisätään XML-dokumenttiin viimeiseksi solmuksi:
appendChild
XML-documentissa valittuun elementtiin lisätään aikaleimaus-attribuutti:
selectedElems.setAttribute("id", Date())
Dynaaminen taulukkogenerointi CSV-muotoisesta tiedosta:
var kokemus = new Array()
//Tietokannan sarakeotsikot ensimmäisellä rivillä
kokemus[0] = "Vuosi;Työnantaja;Tehtävä"
//Tietueet seuraavat CSV-merkkijonona
kokemus[1] = "2002;OSAKK;ATK-suunn."
Merkkijonojen purku SPLIT-metodilla:
Sarakeotsikot:
aOfMj = ar[0].split("")
Tietueet:
aOfMj = ar[i].split("")
Käytä isojen arrayiden indeksoinnissa:
var ar = new Array
ar[ar.length] = "arvo1"
ar[ar.length] = "arvo2"
Etuna:
- helppo poistaa elementtejä välistä
- helppo lisätä elementtejä väliin
- numerointia ei tarvitse muuttaa
Sain vihdoin Excelin AutoFilter-poiminnan toimimaan VBA-koodista:
Selection.AutoFilter Field:=3, Criteria1:=">10000", Operator:=xlAnd
Range("tietokanta").Select
Selection.Copy Destination:=Workbooks("Book1").Sheets(2).Range(A1)
Päivämääräpoimintojen kanssa oli kuitenkin ongelmia!
CSVtoJS.html
- CSV-tiedot SCRIPT-elementissä
TEXTtoJS.html
- CSV-tiedot DIV-elementissä
TEXTAREAtoJS.html
- CSV-tiedot TEXTAREA-ruudussa
- mahdollisuus päivittää tietoja
MJtoJS.html
- CSV-tiedot peräkkäin SCRIPT-elementin merkkijonossa
Olion ominaisuuksien eli tietueen kenttänimien luku:
var om = new Array()
for (ominaisuus in tuote[1]){
om[i] = ominaisuus
i++
}
Olion ensimmäinen ominaisuus saadaan:
om[0]
Olion ensimmäisen ominaisuuden arvo saadaan:
tuote[1][om[0]]
Jotta JET-tietokantamoottori löytäisi tiedot Excel-tietokannasta, pitää tietokannan ensimmäisellä tietorivillä olla kaikissa kentissä tietoja eli siinä ei saa olla tyhjiä soluja!
Samassa kentässä olevien solujen tietojen pitää olla samaa tyyppiä eli samassa sarakkeessa ei saa olla tekstejä ja numeroista!
Miten kohdistin siirretään pois valintalistalta tai tekstiboxista itse dokumenttiin, jotta dokumenttia päästäisiin vierittämään näppäimillä:
document.body.focus()
Tekstisisältö voidaan hakea XMl-elementistä attribuuttinimellä:
otsikko = root.selectNodes("*[@otsikko]").item(0).text
Dokumentin dynaaminen kirjoittaminen DIV-elementteihin oli parempi ja joustavampi ratkaisu kuin kirjoittaminen TABLE-rakenteeseen. Muotoilut ja mitoitukset toimivat DIV-elementeissä yksilöllisemmin ja paremmin!
Lapsielementtien lukumäärä saadaan XML-dokumentissa seuraavasti:
root.childNodes(0).childNodes.length
Nimetyn attribuutin arvo saadaan XML-dokumentissa seuraavasti:
root.childNodes(i).getAttribute("id")
XML-koodissa erikoismerkit pitää koodata:
< on <
> on >
Uuden kuvan päivittämien kontrollissa onnistui vain, kun ajettiin koodit:
kuva1.play()
kuva1.stop()
kuva2.play()
kuva2.stop()
jne...
Dim MyArray(6,13)
Dim i As Integer
i = 0
Do Until myRS.EOF
For kentta = 0 To 12
MyArray(i,kentta) = myRS(kentta)
Next
myRS.MoveNext
i = i + 1
Loop
Saadusta arraysta voit tehdä monisarakkeisen ListBoxin helposti:
UserForm1.ListBox1.List() = MyArray
Kun koko recordset on luettu arrayhin, voit valintalistan valinnoilla palauttaa minkä tahansa kentän eli sarakkeen arvoja!!
ADO;n GetRows-metodi antaa Recordsetin rivit 2-ulotteiseen arrayhin väärin päin ja sen takia array pitää kääntää listboxeja varten.
GetRows antaa myArray(sarake, rivi).
ListBoxiin pitää olla myArray(rivi, sarake)!
Hyvä esimerkki JavaScriptin käyttömahdollisuuksista Excelissä ja Excel-sovelluksissa:
G:\html2002\Tietojen haku HTML-taulukosta.xls
Erase-metodi nollaa kiinteäkokoisen arrayn elementit ja vapauttaa dynaamisen arrayn tilanvarauksen VB:ssä ja VBS:ssä. Dynaaminen array pitää määritellä uudelleen ReDim:llä.
Elementtien nollaus:
Erase myArray
Vanha Excel-työkirja avataan www-sovelluksesta käsin:
xlApp.Workbooks.Open("file://C:/jukka.xls")
Voit lisätä JS-koodin merkkijonoihin ylimääräisiä lainausmerkkejä helposti seuraavasti:
\" tai \'
Rivinvaihto on \r ja\n
Tabulaattori on \t
ADO:n GetString-metodi antaa koko recordsetin sisällön helposti ja kätevästi merkkijonon muodossa. Voit myös antaa helposti omat muotoilukoodit esim. HTML-taulukoita ja -valintalistoja varten.
Oletusarvoisesti sarake-erottimena on tabulaattori eli "\t" ja rivierottimena rivinvaihto eli "\r"
Aina ei ole tarkoituksenmukaista esittää tietoja HTML-taulukossa, vaan joskus on parempi esittää recordsetin rivit DIV-elementeissä ja sarakkeet SPAN-elementeissä.
Elementit muotoillaan ja mitoitetaan STYLE-osiossa!
Saat selville elementin korkeusaseman eli koordinaatit seuraavasti:
function anna(rivi){
var nro = rivi.id
h = document.all.tags("div").item(nro).offsetTop
}
Funktio antaa hiiren osoittaman DIV-elementin korkeusaseman, kun elementeille on luontivaiheessa annettu niiden järjestysnumerot id-attribuutteihin.
Saat minkä tahansa Excel-taulukosta valitun alueen solujen arvot ajetuksi merkkijonoksi seuraavasti:
For Each c In Selection.Cells
mj = mj & c.Value & ""
Next
Kenttien (solujen) erottimena on puolipiste!
Saat merkkijonon talteen johonkin soluun muualle kopiointia varten:
Cells(r,c).Value = mj
Title-attribuutti mahdollistaa objekteihin liitetyt esiinponnahtavat "puhekuplat", joita voidaan käyttää selitteinä HTML-sivulla.
Tekstissä title voidaan toteuttaa kahdella eri HTML-elementillä seuraavasti:
Määritelmällä:
<DFN>Näytettävä teksti</DFN>
Akronyymillä:
<ACRONYM>Näytettävä teksti</ACRONYM>
Jos HTML-dokumentissa on kaksi tyylisivua eli STYLE-elementtiä peräkkäin, niin niitä käsitellään JS-koodissa seuraavasti:
tyyli1 = document.styleSheets(0)
tyyli2 = document.styleSheets(1)
Tällöin viimeisin tyyli eli tyyli2 on voimassa.
Tyyli2 muutetaan tyyliksi1:
document.styleSheets(1).disabled = true
eli tyylisivu otetaan pois käytöstä!
Voit toteuttaa monimutkaisten dokumenttien tuottamisjärjestelmän seuraavasti:
1. Aloitussivu toimii valikkona
- valitaan oppiaine
2. Erilliset oppiainekohtaiset HTML-sivut/web-sovellukset
- valitaan aihe
3. Tuotetaan aihekohtainen sivu dynaamisesti lennosta
Tyylien avulla on mahdollista tuottaa samasta sisällöstä erilaisia ulkoasuja ei käyttötarkoituksiin:
1. Katselu kuvaruudulta
2. Katselu valkokankaalta
3. Tulostus paperille
Hyvä keino tarkistaa SQL-kyselyn tuloksena saadun reocrdsetin eli tietuejoukon sisältö:
alert(RS.GetString())
RS.MoveFirst()
Voit etsiä UserFormilta käsin oikean kirjoituskohdan alla olevasta taulukosta seuraavalla koodilla:
alkurivi = rivin numero, josta taulukon kirjoitusalue alkaa
r = alkurivi + SpinButton1.Value
Cells(r,1).Select
Haku toimii ylös ja alas päin!
Hiiren kohdalla oleva rivi valitaan HTML-taulukosta koodissa seuraavasti:
<SCRIPT FOR=rivi EVENT=onclick>
taulu.rows[this.rowIndex].style.color = 'yellow'
</SCRIPT>
Oheinen koodi muuttaa taulu-nimisessä HTML-taulukossa hiiren klikkauksesta kohdalla olevan rivin tekstin värin keltaiseksi. Rivien id-tunnuksena pitää olla id=rivi!
innerText näyttää JavaScriptin rivinvaihdot \n ja \r
innerHTML ei niitä näytä
innerHTML:n merkkijonossa rivinvaihdon merkkinä pitää olla <BR>
Näkyvä rivinvaihto = Chr(13)
Näkymätön rivinvaihto = Chr(10)
Saat merkkijonosta merkin ANSI-koodin eli merkin numeron seuraavasti:
nro = Asc(Left(mj,1) tai
nro = Asc(mj)
Tapahtumakalenterin toteuttaminen filterAsiarek-systeemillä:
1. Tapahtumien poiminta hakuehdoilla
2. Tapahtumien valinta
3. Tapahtumien tulostus
Seuraava tapahtumaohjausmalli toimii sekä JavaScriptillä että VBScriptillä!
Miten saadaan selville asioita kohdalla olevasta elementistä HTML-dokumentissa?
Elementin numero:
i = window.event.srcElement.sourceIndex
Elementin nimi:
nimi = window.event.srcElement.tagName
Elementin id
id = window.event.srcElement.id
Tietojen perusteella elementille voidaan tehdä mitä tahansa:
document.all(i).style.backgroundColor = "green"
Voit myös tehdä merkintöjä HTML-taulukkoon:
document.all(i).innerText = "x"
Elementtejä, joihin tapahtumaohjaus vaikuttaa, voit rajata if- ja switch- (Select Case) lauseilla!
Tapahtumafunktioissa pitää olla VBScriptissäkin sulut:
<BODY onclick="ajaFunktio()">
Saat tietoja hiiren kohdistimen kohdalla olevasta mistä tahansa HTML-elementin mistä tahansa ominaisuudesta (attribuutista):
Elementin nimen:
nimi = window.event.srcElement.tagName
Elementin numeron:
nro = window.event.srcElement.sourceIndex
Elementin id:n:
id = window.event.srcElement.id
kuva-nimisen attribuutin arvon:
kuva = window.event.srcElement.kuva
Saat kätevästi selville rivin numeron HTML-taulukosta:
<script for= rivi event=onclick>
var i = taulu.rows[this.rowIndex].rowIndex
Indeksiä i voit sitten käyttää tietojen hakemiseen recordsetista:
recordset.absoluteposition = i
Voit näyttää koko tietueen sisällön eli useita rivejä minkä tahansa elementin TITLE-attribuutissa:
Rivinvaihto TITLEssä: "\n"
Tabulointi TITLEssä: "\t"
Voit ajaa id-attribuutit myös TDC:hen sidottuun HTML-taulukkoon:
taulu.rows(i).cells(0).id = "mj"
Voit merkata hiiren kohdistimen kohdalla olevan elementin koodilla:
x = window.event.srcElement.sourceIndex
document.all.item(x).style.backgroundColor = "yellow"
Sain vihdoin toimimaan parametrien välityksen A-linkeistä VBScript-aliohjelmille:
<A HREF="vbscript:""" onclick="koe('Jukka')">Linkkiteksti</A>
sub koe(nimi)
msgbox nimi
end sub
Linkkiosoitteeksi (HREF) siis piti laittaa tyhjä vbs-ohjelma ja ajettava vbs-ohjelma laitetaan vasta onclick-tapahtumaan.
Voit käyttää replace()-funktiota :
- merkkijonojen korvaamiseen
- merkkijonojen poistamiseen
- toistuvien merkkijonojen poistamiseen
- välilyöntien poistamiseen
JavaScriptin replace toimii vaillinaisesti, koska se poistaa vain yhden esiintymän. Monta esiintymää piti poistaa loopilla.
VBScriptissä replace poistaa heti kaikki eiintymät.
Voit käyttää xml-tiedostoja vb-ohjelmissa helposti ja kätevästi:
1. Kytke tarvittava referenssi:
- kruksaa Microsoft XML version 2.0 eli MSXML.DLL
2. Alusta objekti koodissa:
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
3. Lataa XML-dokumentti:
xmlDoc.Load("..\cd_catalog.xml")
Voit tuoda kaikki VB-sovelluksen tarvitsemat resurssitiedot:
- yhdessä XML-tiedostossa
- useassa XML-tiedostossa
Voit tallentaa XML-tiedoston VB:ssä (ei kuitenkaan selaimessa):
xmlDoc.save ("D:\jukanXML.xml")
Tietojen haku elementin nimellä:
nimi = xmlDoc.getElementsByTagName("NIMI").Item(0).Text
Tietojen haku attribuutin nimellä:
kotipaikka = xmlDoc.childNodes(1).selectNodes("*[@kotipaikka]").Item(0).Text
tai
selectSingleNode("*[@kotipaikka]").Text
xmlDoc.DocumentElement
- antaa koko documentin sisällön eli riviltä 2 alkaen ja jättää pois rivin 1 eli xml-määrittelyn
Kaksi tapaa valita kohde-elementtejä XML-dokumentista:
1. childNodes.item(i)
2. selectNodes("NIMI").item(i)
Kaksi tapaa valita elementtejä attribuuttien ja attribuuttiarvojen perusteella:
1. root.selectNodes("CD/*[@id='Jukka']").item(0).text
2. root.selectNodes("CD/*[@id]").item(0).text
tai
2. root.selectNodes("*/*[@id]").item(0).text
1. Tiedot yhtenä pitkänä merkkijonona XML-tiedostossa
2. Merkkijonon hajoittaminen split()-funktiolla ja luku JS-arrayhin.
3. Tietojen kirjoitus araysta www-sivulle DIV- ja SPAN-elementteihin tai taulukkoon:
mj = mj + '' + aOfMj[i] + ''
mj = mj + '' + aOfMj[i+1] + ''
jne...
i = i+3 //Seur. tietue
Voit kopioida koko tietuesolmun sisällön (esim. CD) merkkijonoon ja sieltä uuteen XML-tiedostoon helposti:
cd1 = root.selectNodes("CD").item(0).xml
XSL-tiedosto voidaan lukea/ladata dynaamisesti merkkijonosta, jolloin merkkijonossa voidaan käyttää interaktiivisia muuttujia.
XSL-lajittelu voidaan toteuttaa lisäämällä yksi ainoa koodirivi:
<xsl:for-each select="CATALOG/CD' + maa + " order-by="+TITLE">'
XSL-menetelmä osoittautui erittäin nopeaksi:
HTML-taulukko tulostuu ruudulle nopeasti (muutamassa sekunnissa) isostakin tiedostosta (1000 riviä)!
Merkkijonoja voidaan yhdistää +-operaattorilla vähimmällä koodilla seuraavasti:
mj+="Merkkijono1"
mj+="Merkkijono2"
Kaikkien esiintymien korvaus kerralla merkkijonossa JavaScriptillä onnnistuu käyttämällä säännönmukaisia lausekkeita:
var mj = "jukka, sinikka, jukka"
var sana = "jukka" //Poistettava sana
var malli = eval("/" + sana + "/g;")
var mj = mj.replace(malli, "")
Eval() toteuttaa merkkijonon JavaScript-lauseena!!
Muuntajalla g = global varmistetaan, että kaikki malliin täsmäävät sanat korvataan!
Käytä hyväksi JavaScriptin säännönmukaisia lausekkeita, myös monipuolisesti eri funktioiden kanssa!
XSL-kielessä on mahdollista lajitella myös attribuuttiarvojen mukaan:
order-by="+@nro"
order-by="-@nro"
Voit antaa XSL:llä samanaikaisesti useita attribuutteja:
<xsl:attribute name="id">
<xsl:value-of select="@id">
</xsl:attribute>
<xsl:attribute name="tunnus">
<xsl:value-of select="@tunnus">
</xsl:attribute>
Otetaan kuudes elementti:
<xsl:for each select="DOKUMENTTI/*[5]">
Tiedoston lataus:
musiikkiSoitin.FileName = "tiedosto"
Tiedoston soitto:
musiikkiSoitin.play()
xsl:sort eli lajittelu ei toimi vielä IE5:ssä, vaan vasta IE6:ssa.
<xsl:for-each select="ELEMENTTI" order-by="+KPL">
tai
<xsl:for-each select="ELEMENTTI" order-by="+@KPL">
jossa KPL = elementin nimi, jota ei olekaan
@KPL = attribuutin nimi, jota ei olekaan
Haetaan elementit, joissa ei ole id-attribuuttia:
match="element[not(@id)]"
Suurin osa XPathin merkkijonofunktioista ei toimi IE5:ssä, jossa on msxml2
Voit kiertää XPathin merkkijonorajoitukset käsittelemällä XML-tiedoston etukäteen ohjelman aluksi JavaScriptin merkkijonofunktioilla.
Lisää erillinen hakuattribuutti elementteihin poimintoja varten:
esim. alkukirjaimella hakua varten lisää attribuutti "alku"
alku="A"
Saat halutun palan merkkijonosta JavaScriptillä:
mj = mj.substring(alku,loppu)
Esim. saat merkkijonon ensimmäisen merkin:
mj = mj.substring(0,1)
Saat lähetettyä Data Dumpin Yamaha PSR-6300-soittimesta:
Data Dump = MIDI MODE + Upper Orcestra Cosmic
Data Dump oli aina saman kokoinen eli 65557 bytes.
Data Dumpin lähettäminen PC:lle kesti 21 sek.
Data Dump = MIDI MODE + Upper Orchestra Cosmic
PSR Exclusive Mode = MIDI MODE + Upper Orhestra Brass & Chimes
- PSR:n käyttö multitimbraalisena soundimoduulinan ilman automaattirytmiä
Music ProgrammerSend Mode = MIDI MODE + Upper Orchestra Brass2
- Music Programmerin äänitys PC:lle
SysEx tiedot pitää tallentaa erikseen SYX-tiedostoina MIDI Orchestratorin SysEx-ikkunasta.
SysEx-tiedostot piti ladata ensin "SysEx"-listalle ennen lähettämistä.
Lähettäminen MIdiOutin kautta.
Lähettäminen kesti noin 15 sek.
Yamaha PSR-6300:ssa rummut on Ch = 15
Sain toimimaan interaktiiviset eli dynaamiset poiminnat ja lajittelut myös kiinteissä XSL-tiedostoisssa:
1. Käytä XSL-tiedostoissa valittuja muuttujanimiä kuten $maa
2. Kun XSL-tiedoston sisältö luetaan merkkijonona, voidaan muuttujanimet korvata käyttäjän valitsemilla arvoilla:
mj = mj.replace("$maa", "USA")
tai
mj = mj.replace("$kentta", "ARTIST")
XML Data Islandin eli XML-datasaarekkeen sisältö voidaan lukea merkkijonoon aivan normaalisti:
mj = xmlDoc.innerHTML
Datasaarekkeessa oleva XSL-tiedosto voidaan lukea:
mj = xslDoc.innerHTML
tai
mj = xslDoc.xml
Objektimuuttujat pitää JavaScriptissä alustaa aina avainsanalla var:
var muuttujanimi = objektinimi.ominaisuus
xsl:sort EI toimi IE5:ssä.
Lajittelu toimii lausekkeessa
<xsl:for-each="" order-by="+kentta">
mutta numeroiden osalta väärin!
Saat onnistumaan numeroilla lajittelun kiertoteitse seuraavasti:
1. kerro desimaaliluvut kokonailuvuiksi esim. 100:lla (100 x 123.45 = 12345)
2. kirjoita kokonaisluvut merkkijonona attribuuttiin (hinta=0012345)
3. lajittele hinnat attribuuttiarvojen mukaan merkkijonoina (PRICE/@hinta)
Usein tarvittavia näppäinkomentoja MIDI Orchestratorissa:
Kopioi = Ctrl-Insert
Liitä = Ctrl-V
Liitos tapahtuu kohdistimen osoittamaan paikkaan ja raidalle.
1 "laatikko" raidalla = 1 tahti
musta "laatikko" = tahti jossa tapahtumia
Excelin VBA-makrojen ajo HTML-tiedostosta käsin onnistuu seuraavasti:
xlApp.Application.Run("tiedosto.xls!makronNimi")
Tietokanta kannattaa lähettää XML-tiedoston attribuuteissa eikä elementeissä, koska:
1. attribuuttirakenne on kevyempi (pienempi tiedostokoko)
2. attribuuttien käsittey koodilla on helpompaa kuib elementtirakenteen käsuttely
Voit identifioida sähköpostiviestin myös aiheen (Subject) mukaan:
Viesti, jonka Subject = "Jukalta"
Set viesti = olApp.ActiveExplorer.CurrentFolder.Items("Jukalta")
Voit sulkea Excel-ohjelman ohjelmallisesti:
xlApp.Application.Quit()
Jos et halua Excelin "huomautusilmoituksia":
xlApp.Application.DisplayAlerts = "False"
Voit välittää JavaScriptillä parametreja Excelin VBA-makroihin eli voit käyttää JS-muuttujia makroissa!
Voit käyttää myös kaikkia Excelin ominaisuuksia ja toimintoja JavaScriptistä käsin, myös ajastettuna eval()-funktion avulla!
VB:n dynaamiset taulukot alustetaan General Declaration osassa aliohjelmien yläpuolella avainsanoilla Dim tai Public.
Taulukon koko määritellään aliohjelman sisällä avinsanalla ReDim.
ReDim poistaa kaikki entiset arvot taulukosta!
Jos haluat säilyttää arvot/arvoja, on sinun käytettävä avainsanaa Preserve.
Excelistä löytyi Referenssi:
Microsoft Scripting Runtime
Ja sieltä seuraavat objektit:
Dictionary
Drive
Drives
File
Files
FileSystemObject
TextStream
Lisätään ensin uusi tyhjä tietue
RS.AddNew
Lisätään kenttien sisällöt
RS.Fields("kentta1") = "mj1"
RS.Fields("kentta2") = "mj2"
RS.Fields("kentta3") = "mj3"
Päivitetään lisäys tietokantaan
RS.Update
DELETE ei toimi minun DAO-versiossa Excelissä!
Minun ADO-versiolla ei pystynyt lisäämään tietoja tietokantaan Excelissäkään, saati sitten www-sovelluksissa!
Kenttien luku monisarakkeiselle valintalistalle:
ListBox1.AddItem myRS("id")
ListBox1.List(0,1) = myRS("ryhmä")
ListBox1.List(0,2) = myRS("nimike")
Koko recordset voidaan avata myös:
Set myRS = myDB.OpenRecordset("taulu")
VBA-objektien Name-ominaisuutta ei voi antaa enää ohjelman ajon aikana!
Access(MDB)-tietokannan luonti tyhjästä koodilla Excelissä:
DBEngine.Workspaces(0).CreateDatabase()
.CreateTableDef
.CreateField
kts. VB4.0 Workshop s.220
D:\Työt\Luo MDB-tietokanta.xls
MsgBoxilla voi olla myös otsikko:
MsgBox mj, "Otsikkoteksti"
SELECT * INTO temp FROM taulu
1. Lisää Excel-työkirjaan temp-nimisen sivun eli taulukon
2. Lisää sivun alkuun temp-nimisen alueen
3. Lisää sille taulun tiedot
SELECT * INTO temp FROM taulu WHERE 1 = 2
Perustaa samanrakenteisen TYHJÄN taulun.
Voit antaa myös VB-, VBA-, VBS- ja JS-sovellusten muuttujien arvot XML-tiedostoina elementtien attribuuteissa näin:
<CATALOG
muuttuja1="arvo"
muuttuja2="arvo"
/>
jossa CATALOG on tason 1 tyhjä elementti!
Jos annat muuttujat itse elementeissä, voit antaa lisämääreitä attribuuteissa.
Taulun poisto MDB-tietokannasta toimi näin:
DROP TABLE taulu
Voit tallentaa Excelin UserFormin:
ExportFile/*.frm
Parempi menetelmä XML-tiedostojen ajamiseksi Excel-taulukosta:
G:\html2003\saveFieldsXMLattrib.xls
1. Kirjoittaa tiedot suoraan kovalevylle Printillä
2. Ei käytä kirjoittamiseen/tallentamiseen ollenkaan XMLDOM-oliota!
Sovelluksen eri osat:
1. Tietueiden tallennus elementteihin
2. Tietueiden tallennus attribuutteihin
3. Tietueiden tallennus txt- tai csv-tiedostoihin
Voit korvata merkkejä Excelin solussa seuraavasti:
Cells(1,1).Replace "", "
jossa Replace-funktion parametrit ovat:
Replace mitä, millä, miten
Merkkijonossa ei pystynyt käyttämään Replace-funktiota suoraan, vaan mj piti sijoittaa ensin soluun!
Merkkijono on erittäin kätevä dynaaminen tietovarasto:
- voit kerätä siihen tietoa, myös vaiheittain
- voit muuntaa tiedot XML-muotoon
- voit näyttää tiedot eri tavoilla
- voit tallentaa tiedot pysyvästi (Excelissä)
- voit muokata tietoja Replacella
G:\html2003\splitMj.xls
Merkkien korvaus Excelin merkkijonossa:
mj = Application.Substitute(mj, "", "
Substitute-funktion syntaksi:
Substitute(mj, vanha, uusi)
Substitute on Excel 4.0:n funktio ja Excel 4.0:n merkkijonoissa on ilmeisesti noin 120 KB:n kokorajoitus, joten se ei toimi isoissa tiedostoissa/merkkijonoissa!!
Tietolähteen antamiseksi JS-koodilla HTML-taulukolle pitää käyttää dataSrc-ominaisuutta eikä datasrc:
taulu.dataSrc = "#xmlDoc1"
HTML-sivulla voi olla useita erilaisia XML-datasaarekkeita, joista haluttu valitaan näytettäväksi taulukossa dataSrc-ominaisuudella!
G:\html2003\sankarivainajat.html
- nopein ja paras HTML-taaulukon tulostustapa
- suodatus ja lajittelu XSL:llä
- koko taulukko ja sen sisältö on luotu merkkijonossa!!
Solmuja poistetaan XML-tiedostosta:
root.removeChild(root.firstChild)
root.removeChild(root.childNodes(1))
root.removeChild(root.lastChild)
Solmu korvataan toisella solmulla XML-tiedostossa:
root1.replaceChild(root2.childNodes(0), root1.childNodes(0))
jolloin solmu siirtyy root2:sta root1:een ja häviää root2:sta
XPathin funktiot EIVÄT toimi IE5:ssä!!
name()-funktio on XPathin funktio, jonka pitäisi antaa elementin nimi, mutta ei toiminut IE5:ssä!
Saat XML-tiedoston ensimmäisen tietueen käsiteltäväksi XSL:llä seuraavasti :
<xsl:for-each select="*/CD[0]">
G:\html2003\ajaXMLtoTABLE.html
Voit poistaa HTML-taulukon solujen reunaviivat css:llä seuraavasti:
input {border-style:none}
HTML-sivulla olevien painikenappien taustavärit eivät tulostuneet paperille!!
Elementtien nimien luku miltä tahansa tasolta onnistuu seuraavasti:
muuttuja = xmlDoc.getElementsByTagName("muuttuja").item(0).text
Paras dynaaminen tietovarasto VB/VBA-sovelluksissa on:
- XML-tiedosto
- VB-taulukko on jäykkä
- voit käyttää myös kokoelmaa (Collection)
JS-sovelluksissa voit käyttää:
1. XML-tiedostoa
2. JS-arrayta
3. CSV/TXT-tiedostoa
Voit käyttää luokkia eli class tehokkaasti www-sovelluksissa:
- tiedon keräämiseen
- tiedon ryhmittelemiseen
- tiedon esittämiseen
Jos haluat käsitellä VB-kokoelman yhtä tai useaa jäsentä eri tavoin kuin muita, käytä objektin Tag-ominaisuutta:
esim.
If Ctrl.Tag <> "Button" Then
Kokonaislukujen muunto merkkijonoksi:
nro = "00000" + nro
pituus = nro.length
nro = nro.substring(pituus-5)
//Otetaan 5 merkkiä lopusta eli tämä on JS:n Right-funktio!
Desimaalilukujen muunto merkkijonoksi:
hinta = 1000 * hinta
hinta = "" + hinta + ""
hinta = "00000" + hinta
pituus = hinta.length
hinta = hinta.substring(pituus-7)
Arvon anto nimetylle muuttujalle radiopainikkeella:
<input name="valikko" type="radio" onclick="lajitteluJarj='+'"
Tekstitietokanta kirjoitetaan Excelistä levylle tiedostoon:
Open "tiedosto.txt" For Output As 1
Print #1, mj
Close 1
Tekstitietokanta avataan Exceliin TAULUKKONA:
Workbooks.Open FileName:="tiedosto.txt"
tai
Workbooks.Open FileName:="tiedosto.txt", Format:=4
txt-tiedosto ""-erottimella avautui oikein taulukkona!
csv-tiedosto ""-erottimella EI avautunut oikein taulukkona
Voit avata HTML-taulukon Exceliin:
Workbooks.Open FileName:="tiedosto.html"
Voit myös kopioida HTML-taulukon Excel-taulukoksi:
ActiveWorkbook.Sheets(1).Range("TABLE").Copy Destination:=ThisWorkbook.Sheets(4).[a2]
HTML-taulukon alue Excel-taulukossa on aina nimeltään "TABLE"!
HTML-taulukon lajittelu Excelissä onnistuu myös Excelin lajittelukomennoilla ja työkaluilla suoraan:
1. Vie kohdistin lajiteltavaan sarakkeeseen
2. Paina painiketta A->Z tai Z->A
Myös Excelin pikasuodatukset toimivat hyvin ja nopeasti. Tilarivi näyttää määrät.
Excel-taulukon AutoFilter-alueen kopiointi VBA:lla:
[A2].Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="USA"
ActiveSheet.[a:d].Copy Destination:=Sheets(1).[A2]
AutoFilter-menetelmän haittapuoli:
AutoFilter tekee hirveän isoja tiedostoja eli yli 5 Mt pienistäkin taulukoista!!
Minkä tahansa XML-tiedoston avaus ja käsittely Excelissä:
G:\html2003\ajaXMLbyDOM.xls
Excel-taulukon ajo XML-muodossa temp-tiedostoksi ja poiminnnat sieltä:
G:\html2003\ajaXML.xls
DX-soundien lähettäminen MIDI Orchestrator Plussasta TX7:ään reaaliajassa:
1. Laita DX-soundiraidan portti = AWE64G MIDI Out[330]
2. Event Editorissa
3. Insert
4. Type = SysEx
5. Aseta paikka eli Bar:Beat:Click esim. 2:
6. Valitse Bankista soundi, joka on SysEx-ikkunan aktiivisessa tiedostossa avattuna. SysEx:issä sai olla mikä tahansa portti!
Kun kohdistin on www-sivulla, voit vierittää sivua välilyönti- ja shift+välilyöntinäppäimillä
Voit suorittaa JavaScript-olioiden alustuksen ja sijoittamisen samalla kertaa:
autot[0] = mersu = {}
G:\html2003\olionOminaisuudet2003.html
Isot ja vaihtuvat muuttujalistat kannattaa kirjoittaa XML-muotoon attribuutteina.
Eri listat voivat olla:
1. Eri tiedostoissa
2. Eri elementeissä
3. Eri datasaarekkeissa
Voit käyttää samoja muuttujalistoja erikielisissä sovelluksissa!
Ehto-operaattorina XSL-muunnoksissa käytetään [ ]-merkintää. Tällä testataan, onko jokin tietty ehto tosi.
XPathissa käytetään kahden ehdon yhdistämisessä avainsanoja and ja or (JA-/TAI-operaatiot).
XPathin loogisina operaattoreina käytetään XML-dokumenteissa:
< Pienempi kuin <
<= Pienempi tai yhtä suuri kuin <=
= On yhtä suuri kuin =
Esim.:
["SUKUNIMI >'A' and SUKUNIMI <'B'"]
XML-elementeissä olevat attribuutit häiritsivät datalähteen kenttien sitomista HTML-taulukkoon hlorek:ssä!
Elementti oli aikaisemmin:
<SUKUNIMI alku="A">
Piti olla toimiakseen:
<SUKUNIMI>
Voit antaa OPTION-elementeissä mitä tahansa omia attribuutteja eikä pelkästään value-attribuuttia!
Poiminnat skandeilla säännönmukaisissa lausekkeissa onnistuvat seuraavasti. Poimii sekä iso- että pienialkuiset skandit:
malli = /[A-ZÅÄÖa-zåäö]+/
Säännönmukaiset lausekkeet skandeilla toimivat näissä:
G:\html2003\replaceMatchKoe.html ja ajaKUntaValikkoXSL.html
Seuraavat JavaScript-lausekkeet toimivat hyvin myös ilman javascript: -tekstiä:
<select name='valikko' onchange=hlo=valikko.value;ajaTaulu(hlo)>
<a href=ajaTaulu('h1')>
Voit antaa valintalistojen OPTION-elementeissä parametreja:
1. muuttujissa value="luku1=100"
2. merkkijonoissa value="2,3,5"
3. funktioissa value="ohjelma(2,3,5)"
HTML-elementillä on ainakin 59 eri attribuuttia, joten pelkästään omat attribuutit eivät näy attribuuttilistalla!
Voit antaa myös arraylle (esim. ryhmälle) ominaisuuksia näin:
alue[1][1] = kahvila = new Array()
alue[1][1].otsikkoteksti = "1. Kahvilat"
Voit merkkijonoissa XSL-lausekkeisiin yhdistää yleispäteviä XML-DOM-objektien metodeja:
mj+='<td><xsl:value-of select="'+xmlDoc.documentElement.childNodes(0).childNodes(i).nodeName+'"/></td>'
Voit hajoittaa päivämäärämerkkijonon JavaScriptin split-menetelmällä:
mj="6.8.3003"
mj=mj.split(".")
pv=mj[0]
kk=mj[1]
v=mj[2]
Huomaa, että erotinmerkkinä voi olla mikä tahansa eli ;:,.-/ tai välilyönti
XSL-lausekkeissa/merkkijonoissa kaikissa HTML-elementeissä pitää olla AINA myös lopputagit:
Valintalistojen valinnat käsitellään JavaScriptissä näin:
valittuTeksti = valintaLista.options[valintaLista.selectedIndex].text
Pelkkä selectedIndex ei riitä, vaan eteen on aina laitettava objekti "valintaLista"!!
text = valintalistalla näytettävä teksti
value = valitun kohdan (option) arvo eli value
Option elementteihin voi antaa myös omia attribuutteja:
esim. nimi, merkki, vari, tyyppi, hinta.
Saat näin helposti ulos valintalistan valinnoista monipuolista tietoa!
Voit lisätä mitä tahansa omia attribuutteja HTML-elementteihin ja saat niiden arvot selville skriptin avulla (IE4+).
Voit asettaa minkä tahansa html- ja xml-elementin luokan ja samalla tyylin elementin className-ominaisuudella!!
Kova puusavotta elokuussa:
8 m3 pilkkeitä omalta tontilta,
mm. 2 isoa salavaa pieniksi
Tuomo Lötjönen tyhjensi ja puhdisti likakaivo 1:n
Desimaalilukujen pyöristys JavaScriptillä:
num = 1.456
num = Math.round(num * 100) /100
alert(num)
Huom! num = 1.46
num = 1.00 EI onnistunut!!
Voit tehdä JS-olioihin myös useita oliomuuttujasijoituksia:
autot[0] = a1 = mersu = {}
Tällä tavalla voit käyttää olioissa:
- numeroviittauksia
- nimiviittauksia
- arrayn alkionumeroviittauksia
Voit käyttää karttasovelluksissa kuumina pisteinä myös DIV-elementtejä, jolloin voit numeroida ne kartalla.
JavaScriptissä globaalit muuttujat pitää määritellä ennen kaikkia funktioita!!
Kuvatiedostojen kokoja:
320 x 240 jpg 12 kt - 21 kt
768 x 512 jpg 40 kt - 70 kt
768 x 512 bmp 394 kt
kuvaOhjelmanTeko.html
Mahdollistaa kuvaohjelman ajamisen synkassa äänen kanssa:
- mistä ajankohdasta (sek) tahansa
- mistä kuvasta(t) tahansa
Kuvaohjelmissa Timer toimii liian hitaasti. Kun Timer jätättää 5 min. esityksessä 40 sek, on virhe n. 13 %.
Virhe korjataan siten, että Timerin viive muutetaan 1000 ms -> 860 ms. Tällöin myös kuvien esitysaikataulu pitää hienosäätää uudelleen. Ajastus on sitten synkassa äänen kanssa.
Kuvien esittäminen ja vaihtaminen FXImage-kontrollissa:
<param name="FileName" value="tiedostonimi" >
with (olion_nimi) -rakenteen käyttö lyhentämään koodia:
with (FXLabel1) {
Caption = "Dataniemi Oy"
BackColor = 255
}
with (document.ikkunaform) {
location =
status =
}
mp3-tiedostojen toisto = play()
wav-tiedostojen toisto = run()
Väri kiertää kehää FXLabelin ympäri = #37
D:\Työt\heksaluvut.xls
- heksadesimaalilukujen muunto desimaaliluvuiksi
- heksadesimaalilukujen muunto RGB-luvuiksi
- heksavärien muuntaminen RGB-väreiksi ja "desimaalilukuväreiksi"
Tommy Hellsten:
Omien syvimpien tarpeiden tunnistaminen on suurinta viisautta ja kypsyyttä. Se on oman todellisen luonteen ja minuuden löytämistä!
Kolmessa sarakkeessa olevien heksalukujen muuntaminen RGB-luvuiksi, siten että heksalukujen paikalle kirjoitetaan RGB-luvut:
For Each c In Range("heksat").Cells
luku = c.Value
x = Sheets("Sheet1").Range("heksa").Find(luku).Offset(0,1).Value
c.Value = x
Next
Kolmen RGB-luvun muuntaminen desimaaliluvuksi Excel-taulukossa:
D1: =(256 * 256 * C1) + (256 * B1) + A1
CD-soittimen volumesäädöt:
Pan=0, Vol=100, Arvo=65535
Pan=16, Vol=100, Arvo=-65535
Pan=0, Vol=50, Arvo=32767
Pan=8, Vol=100, Arvo=-66000
Pan=16, Vol=100, Arvo=-131000
Pitkien FXLabel-efektien keskeyttäminen:
CancelMode = 1 - ESC Key
Volume%, Volumearvo
100 %, 0
56 %, -500
31 %, -1000
18 %, -1500
9 %, -2000
6 %, -2500
3 %, -3000
0 %, -10000
Aluenimet ovat Excelissä työkirjakohtaisia.
Ne muodostavat Names-kokelman, joka voidaan käsitellä For Each-lauseella:
For Each nm In ActiveWorkbook.Names
MsgBox nm.Name
Meno nimetylle alueelle
Application.Goto Reference:=nm.Name
Next
Summien laskeminen VBA:lla Excel-taulukon nimetyistä alueista:
Cells(1,1).Select
Set alue = ThisWorkbook.Names("alue")
summa = Application.Sum(Range(alue))
Edellinen EI toimi ilman Set-lausetta!
Usean alueen käsittelyrutiini:
For Each nm In ActiveWorkbook.Names
Yhden alueen käsittelyrutiini:
For Each c in Selection.Cells
Summien laskeminen VBA:lla nimettyjen alueiden ulkopuolelta:
Set lukualue = ThisWorkbook.Names("luvut")
summa = Application.Sum(Range(lukualue).Offset(0,2))
Excel-arrayt:
{1,2,3;4,5,6}
{"Vasara" 3; 22,00} vaakamatriisi
{"Vasara" \ 3\ 22,00} pystymatriisi
Tietojen haku ja yhdistäminen kahdesta taulusta onnistui parhaiten UNION:illa.
Kahden vuoden erilaisten tilinumeroiden haku ja yhdistäminen:
SELECT DISTINCT Tili FROM kp2002
UNION
SELECT DISTINCT Tili FROM kp2001
D:\DN\Kirjanpito.xls
INSERT INTO ei toiminut kunnolla Excel-taulukossa!!
Taulun liittäminen linkittämällä toiseen tietokantaan:
Set myDB = OpenDatabase("D:\Phones.mdb")
Set linkitettyTaulu = myDB.CreateTableDef("uusiTaulunNimi")
linkitettyTaulu.Connect = "Excel8.0;DATABASE=D:\Dn\kp2002_ol.xls"
linkitettyTaulu.SourceTableName = "vanhaTaulunNimi"
myDB.TableDefs.Append linkitettyTaulu
Tällä menetelmällä voit siirtää tietoja Excel-taulukoista Access- eli MDB-tietokantoihin!
Vaihtuvat pikkukuvat www-sivulla ja vaihtoon tahdistettu MIDI-musiikki, esim. kellojen soitto.
Gif-animaatiossa yksi kuva = 20 kt.
www.taitogroup.fi
PlayCount = 0
jolloin soitto loputtomasti!!
Hyvä Image Cropping -efekti:
Crop.htm INetSDK:ssa
ActiveMovie-kontrollin dukumentaatio löytyy Internet Explorer Web-ohjelmointikirjasta.
Tehty hyvä kuvakollaasiohjelma:
G:\html2003\kuvienheitto3x3.html
Jotta MIDI-tiedoston voisi vaihtaa lennossa www-sivulla, pitää tiedoston lataukseen käyttää FileName-ominaisuutta!
AMovie.SelectionStart
AMovie.SelectionEnd
-annetaan sekuntteina alusta
function soita(from, to, uusi){
AMovie.stop()
AMovie.SelectionStart = from
AMovieSelectionEnd = to
AMovie.run()
Lyhyissä tiedostoissa piti olla:
AMovie.SelectionStart = uusi
-toimi InternetExplorerissa
-EI toiminut HomeSitessa!!
document.onkeypress = keyhandler
function keyhandler(e) {
Key = window.event.keyCode
alert(Key)
}
onkeypress (toimi)
onkeydown (EI toiminut)
onkeyup (EI toiminut)
Netistä löytyi erittäin hyvä systeemi yksittäisten MIDI-nuottien soittamiseen MIDI-API-funktioilla.
Tekijä: saksalainen Michael Werner
D:\midi\winmm.txt
VB:stä ja VBA:sta löytyy Timer-funktio, joka on kätevä ajastimena.
Sen epäkohtana on kuitenkin se, että vain yksi ajastin toimii kerrallaan.
Uuden arkin lisäys työkirjaan:
ActiveWorkbook.Sheets.Add (Before, After, Count, Type)
Lisäys viimeiseksi:=Worksheets(Worksheets.Count)
Paras kopiointimenetelmä isojen alueiden kopiointiin silloin kun alueen koko ei ole tiedosssa:
wk.Sheets(1).Columns("A:G").Select
Selection.Copy Destination:= wk1.Sheets(1).Range("A1")
CurrentRegion toimii myös ilman valintaa:
riveja = Cells(1,1).CurrentRegion.Rows.Count
tmrClock.Interval = (60 - (Timer Mod 60)) * 1000 + 1000
Oikea kanava, Pan = 127
Vasen kanava, Pan = 0
Keskellä, Pan = ---
Haluttu editointi-ikkuna valitaan Cakewalkissa raidan vasemmanpuolimmaisesta nro-sarakkeesta hiiren oikeanpuoleisella näppäimellä.
Jos haluat useita raitoja, valitse ensin useita nro-sarakkeesta!
Voit käyttää Tascamin 4-raitanauhuria RCA-johdon jatkamiseen:
- johto1 viedään tietyn kanavan line inputiin
- johto2 otetaan ulos saman kanaan Send-ulostulosta silta irrotettuna!
- Aux-säädön volumea avataan hiukan eli tarvittava määrä
- Auxin panorointi säädetään samalle puolelle kuin johto1:n panorointi
Atarin MIDI-tiedostot siirtyvät suoraan PC:lle!!
Arrayn sisällön saat siirrettyä suoraan listboxien sisällöksi:
ListBox1.List = arraynNimi
VBA:ssa EI voi käyttää kontrollien taulukoita eli esim:
TextBox1(1)
VB:ssä voi käyttää!!
Voit esittää kuvia VB4:n kuvalistakontrollista:
Picture1.Picture = ImageList1.ListImages(i).Picture
Voit ladata kuvia VB4:n Picture-objektin kautta:
Dim kuva(10) As Picture
Set kuva(0) = LoadPicture("kuva.bmp")
Picture1.Picture = kuva(0)
Excelissä ei ole kuvalistakontrollia eikä Picture-objektia!
JavaScriptissä näyttö on screen-objekti eli
leveys = screen.width
korkeus = screen.height
Dokumentin taustakuvan keskitys
Elementissä:
style="background-position:center center"
JS-koodissa:
tausta.style.backgroundPosition = "center center"
Taustakuvan vaihto:
tausta.style.backgroundImage = "url('G:/bmp/label2.bmp')"
8 Kbps, Telephone quality, 96:1
64 Kbps, FM radio quality, 24:1
128 Kbps CD quality, 12:1
Paras yhdistelmä äänen laadussa ja tiedoston koossa saavutetaan bittiarvolla 128 Kbps
Objekti seuraa hiiren kursoria VB:n kuvakehyksen sisällä:
Sub Picture1 MouseMOve (Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Left = X
Label1.Top = 2200 'Labelia siirretaan vakiokorkeudella
End Sub
Jos objektia halutaan siirtää keskeltä:
Label1.Left = X - Label1.Width / 2
VB:n palapeli PictureBoxeissa pitää olla seuraavat asetukset:
AutoRedraw = True
Visible = True
ScaleMode = 3-Pixel
Kuvien animointiin voit käyttää kätevää Windowsin API-funktiota BitBlt.
Se toimii
- PictureBoxissa
- Formilla
E:\vb32\Kvamix.vbp
Kuvamixin voi tehdä:
- formin taustakuvasta
- samasta kuvasta
- eri kuvista
- sekoittamalla vbSrcAnd:illä
- sekoittamalla vbSrcPaint:illä
E:\vb32\winapi\Apilod32.exe -ohjelmalla voit etsiä Win32API-funktioita ja kopioida niiden määrittelyt suoraan VB:hen!
Linus Torvalds:
Jo pitkään on tiedetty, että ihmiset yltävät parhaaseensa, kun heitä ajaa kiihkeä halu, kun heillä on kivaa.
Wayne W. Dyer: Vaikuta kohtaloosi
Vedät kaiken luovan energian puoleesi ajatustesi kautta .(mielikuvat) s.75
Olet itse luonut ajatuksillasi ja mielikuvillasi nykyiset elinolosi. s.83
Sinusta tulee sitä, mitä ajattelet. s.85
Lopeta elämän surkeuden valittaminen.
Opettele suhtautumaan itseesi ja toisiin ihmisiin lempeästi.
Luovu voittamisen ja oikeassa olemisen tarpeesta. s.109
Kärsivällisyytesi sallii sinun arvostaa kaikkea, mitä olet jo elämässäsi saanut. Saavutat rauhan. s.153
Unelmia koetetaan toteuttaa riippumatta siitä, milloin ja miten ne ilmentyvät.
Aaah - Jumalan ja luomisen sointi
Om - luodun ja kiitollisuuden sointi
D:\Työt\OliotaulukkoXML.xls
- oliot XML-tiedostossa elementeissä
- olioiden ominaisuudet attribuuteissa
- voit kirjoittaa uusia arvoja
- voit kirjoittaa uusia attribuutteja
- käytä kirjoittamiseen setAttribute-metodia
- alkuperäinen XML-tiedosto voi olla myös tyhjä attribuuteista
- voit myös luoda XML-tiedoston tyhjästä
- voit tallentaa XML-tiedoston Save-metodilla Excelissä ja VB:ssä
XML-attribuutti-tietorakenteen käyttötapoja:
1. Excelin VBA-koodissa RAM/ROM
2. VB:N koodissa RAM/ROM
3. JS-koodissa RAM
Erittäin nopea XSL-merkkijonon hajoitussysteeemi:
D:\Työt\splitMj2004.xls
- merkkijonon hajoitus Excel-taulukkoon
- ei tiedoston kokorajoitusta kuten oli aiemmin, koska Substitutea ei ole käytetty enää
- ison Hlorek.xml:n ajo taulukkoon: 926 tietuetta = 21 sek !!
Merkkijonon hajoitus Excel-taulukkoon, kun tiedot ovat attribuuteissa:
D:\Työt\splitMj2004attrib.xls
Pääsy suoraan pankin kotisivulle eli nettipankkiin:
G:\Koivunlehtipankki.html
Scriptin kirjoitus suoraan HTML-elementtiin.
Kirjoita BODY-elementtiin:
onload='javascript:document.URL="http://www.nettiosoite.fi"'
JS-koodi tekee seuraavat toimenpiteet:
1. Käynnistää internetselaimen
2. Muodostaa nettiyhteyden
3. Lataa pankin kotisivun
Kartuta taitojasi harrastuksestasi.
Seuraa alan kirjallisuutta.
Perehdy alaan niin syvällisesti kuin mahdollista!
- ohjelmia
- dokumentteja
- linkkejä uusiin kansioihin
HTML-tiedostonkin sisällön pystyy hakemaan kovalevyltä seuraavalla metodilla:
Open tiedosto For Input As #1
Do Until EOF(1)
Line Input #1, rivi
Loop
Esimerkkejä erilaisten valintojen suorittamisesta vba:lla:
Solun valinta = [a5].Select
Sarakkeen valinta = [a:a].Select
Rivin valinta = [5:5].Select
Nimetyn alueen valinta = [aluenimi].Select
Selainikkunan ominaisuuksien anto JavaScriptillä:
with(document){
ominaisuudet = "toolbar=0, status=0, menubar=0, scrollbars=0, resizable=1, left=0, top=0, width=800, height=600"}
Tietyn documentin avaus selainikkunaan:
window.open("/html2003/Nocturne.html", "jukka", ominaisuudet)
F:/Nocturne.rm = 1184 kt
G:/Nocturne.mp3 = 3394 kt
G:/Nocturne.wav = 18416 kt
Cakewalkilla wav + wav (onnistuu)
Cakewalkilla mp3 + mp3 (ei voi ladata)
IE + embed (Windows Mediaplayer)
wav + wav (onnistuu)
mp3 + mp3 (ei onnistu)
wav + mid (onnistuu)
mid + mid (ei onnistu)
1. Tee ensin tyhjä valintalista valmiiksi sivulle:
<select name="valikko" onChange="aja()">
2. Aja JS-koodi vaihtoehtojen lisäämiseksi listalle:
for (i=0;i<kpl;i++){
var el = document.createElement("OPTION")
el.text = root.childNodes(i).getAttribute("nimi")
el.value = i
valikko.add(el) //elementin lisays
}
createElement-menetelmällä voit luoda ja lisätä myös muita elementtejä (TR, TD jne) dokumentteihin!!
Select-valintalistan option-elementit muodostavat options-kokoelman.
Option-elementtejä voidaan HTML-sivulla käyttää kätevinä alkuperäistietovarastoina sijoittamalla tiedot attribuutteina option-elementin sisälle ja tekstinä näkyviin ulkopuolelle eli valintalistan näkyväksi vaihtoehdoksi:
<option id=1 nimi="Jukka Niemi">Jukka
Huomaa, että SELECT-elementin sisältö on jo sinällään valmis XML-tiedosto, jossa SELECTiin voi sisällyttää myös valmiita JS-funktioita attribuutteina!
Eli XML-tiedostoon voi sisällyttää scriptiäkin.
Luokan tyyliominaisuudet annetaan head-elementin style-elementissä.
Luokan nimi annetaan piste + nimi eli .nimi
Dynaaminen linkkien näyttö luokkanimien avulla näin:
<p onmouseover="javascript:this.className='jukka' onmouseout="javascript:this.className=''">linkin teksti</p>
- javascript-tekstiä ei välttämättä tarvittu
- luokkanimenä kävi myös pelkkä numero esim .1
Cakewalkin nuottitulosteeseen voit antaa infotietoa kuten kappaleen nimen, tekijät ym seuraavasti:
File-Info...
www.freebok.net/
XML-datasaareke liitetään html-taulukkoon:
<table datasrc="#xmlDoc">
<tr>
<td><div datafld="id"></td>
<td><div datafld="kuva"></td>
</tr>
Elementti ja attribuutti liitetään samalla tavalla eli attribuutin kanssa EI käytetä @-merkkiä edellä!!
Kuvatiedosto liitetään taulukkoon:
<IMG datafld="kuva">
eli Ei käytetä src="kuva"
Voit sijoittaa html-lomakkeen elementit näyttävästi laatikon eli kehyksen sisälle:
<fieldset>
<legend>Laatikon otsake(voi sisältää myös kuvia)</legend>
muu sisältö
esim. input-elementtejä
</fieldset>
Voit käyttää invert-filtteriä CSS:N kautta kuvahyperlinkeissä:
Invert-filtteri tekee kuvaan efektin filminegatiivin tapaan!
.scary a:hover img {
filter: Invert }
<div id="Festival" class="scary">
<a href=" "><img src="festival.jpg"></a>
</div>
Emme saa menettää toivoamme.
Toivo on ihmisen perusvoima.
Kun sitä on, on elämää.
Toivo toimii meidän käsiemme kautta.
Pekka Hämäläinen: Rohkeuden voima
Desimaalipilkkujen linjaus CSS:llä:
text-align:right
padding-right:100px
Selainikkunan koon muuttaminen linkistä:
Kirjoita linkkiin koodi:
javascript:resizeTo(800:600)
Voit käyttää HTML-documenteissa omia elementtinimiä (Nodename) ja säilöä näiden elementtien attribuutteihin tietoja sivulle aivan samoin kuin XML-tiedostoihin ja XML-datasaarekkeisiin. Nimet <a>, <b> ja <i> eivät kuitenkaan käy.
Elementit eivät näy HTML-sivulla!
Saat selville sivulla olevien elementtien eli tietueiden eli rivien lukumäärän:
kpl = document.all.tags("r").length
Ensimmäisen elementin nimi-attrbuutin arvon saat:
nimi = document.all.tags("r").item(0).nimi
Tietovarasto HTML-sivun BODY-osassa omissa elementeissä niiden attribuuteissa:
<r id="a" nro="101" nimi="Mersu" />
<r id="a" nro="102" nimi="Volvo" />
Elementtien lukumäärä:
kpl = a.length
Tunnetun attribuutin "nimi" arvon haku ensimmäisestä elementistä:
nimi = a[0].getAttribute("nimi")
Cakewalkissa pystyy kaikki Patch changes antamaan numeroilla 1-128 suoraan numeronäppäimistöltä.
Orcestratorissa ei pysty näin!
Numerokomentoja voi käyttää sovituskokeiluihin, mutta niitä ei voi äänittää MIDI-raidoille suoraan PC:ltä.
Roland MV-30:llä pystyy antamaan helposti kaikki (1-128) PgrChange-komennot musiikkilaitteille/-ohjelmille:
1. Valitse Track/RealTime
2. Valitse raita Track = 9-16
3. Valitse P.Chg = F5
4. Valitse oikea MIDI-kanava (Channel)
5. Siirrä kohdistin -->P.Chg#
6. Valitse P.Chg#
valintapyörällä tai
näppäimistöltä + Enter
7. Paina CHG/REC = F1
jolloin soundivaihto lähtee laitteille
Voit tällä tavoin antaa kaikki soundit eli # 1-128.
Soundi vaihtuu, vaikka Patchin nimi ei ohjelman näytöllä vaihdukaan!
Voit Cakewalkissa käyttää myös seuraavia näppäinkomentoja:
*-merkkiä "esivalitsemaan numeroilla, käytä sitten +/- ja hyväksy vihdoin Enter
./.-merkkiä valitsemaan nykyiselle raidalle Solo
Voit lukea MIDI-tiedostoja tekstinä Excel-taulukkoon
D:\Työt\Hae MIDI-tiedosto.xls
Dim tiedosto As String
Dim rivi As String
Dim i As Integer
i = 2 'Aloitetaan kirjoitus riviltä 2
tiedosto = "D:\midimusa.mid"
Cells(1,1).Select
Open tiedosto For Input As # 1
Do Until EOF(1)
Line Input #1, rivi
Cells(i, 1).Value = rivi
i = i + 1
Loop
Close #1
Copy-metodi VBA:ssa ei kopioi soluhuomautuksia ollenkaan!
Controller Expression on MIDI-volume, jolla voit säätää äänen voimakkuutta.
Rumpunuotit on tehty ostetuissa MIDI-fileissä hyvin lyhyillä nuoteilla eli 16.- tai 32.osilla.
MIDI-kappaleen soittaminen Excelistä Roland MV-30:llä:
1. Laita VBA Module1:ssä
2. Private Const MIDI_MAPPER = 1
alkuperäinen oli -1, jolloin soi PC:n soundit
arvolla 0 soi myös PC:n soundit
MV-30:tä varten kannattaisi kuitenkin antaa eri raidoille erilliset MIDI-kanavat
Algoritmi kuvaa ongelman ratkaisemisen ajassa:
1. ensin tehdään jotakin
2. sitten tehdään jotakin muuta
www.midiworld.com
Ilmaisia MIDI-kappaleita säveltäjittäin imuroitavaksi!
ID-nimiä voidaan käyttää samanaikaisesti:
1. HTML-elementtien toiminnan ohjaukseen
2. HTML-elementtien muotoiluun tyyleillä (style ja css)
Tietojen luku eri riveiltä XSL:llä DIV-elementteihin:
Tyhjiä rivejä tuotetaan seuraavasti:
Elementtien toiminnanohjauksessa toimivat:
onclick="alert(this.id)"
onclick="alert(this.nro)"
onclick="alert(this.nimi)"
jossa id, nro ja nimi ovat elementin sisällä olevia attribuutteja
removeAttribute(name As String)
Tietokannan otto käsiteltäväksi SQL:llä:
USE nimi
Uuden tyhjän tietokannan luonti:
CREATE DATABASE nimi
Like-operaattoria käytetään VB:ssä ja VBA:ssa vertaamaan kahta merkkijonoa toisiinsa:
MyCheck = "F" Like "[A-Z]"
Returns True
MyCheck = "a2a" Like "a#a"
Returns True
Summakaavojen kirjoitus kirjanpitojen tuloslaskelmiin makrolla:
ActiveCell.FormulaR1C1 = "=SUMIF(tili, RC[-2], deb)"
Käsiosoitin saadaan taulukon sarakeotsikkoihin, kun solun tyyliksi laitetaan:
th{cursor:hand}
Erittäin hyvä JS-tuoterekisteri poiminnalla oli:
G:\eKauppa1\eTuotteet.html
XML-tiedostoon sidotun taulukon sitominen valintalistalta tehtyyn valintaan:
r = valikko.selectedIndex
xmlDoc.recordset.absoluteposition = r + 1
//Palautetaan ensin taulukon alkuun
taulu.firstPage()
//Haetaan oikea rivi
for (i=1;i
}
for-lause haki oikean rivin nopeasti isostakin XML-tiedostosta
Valintalistan voi tehdä XSL:llä
Albert Einstein:
1. Etsi sekasotkusta perusasiat
2. Saata ristiriidat sopusointuun
3. Vaikeuksissa piilee mahdollisuus
4. Kokemukseni mukaan parasta työtä ei tehdä koskaan onnettomana
"Opin jo aikapäiviä sitten, ettei kannata hukata aikaa pyrkiä saamaan kollegojaan vakuuttuneiksi."
Levitä Cakewalkissa pianoraita koko ruudun korkuiseksi, niin sävelkulku näkyy mahdollisimman hyvin.
Hyvä pianokappale: G:\chet1003.mid
Eri sivujen näyttäminen DIV-elementeistä valinnan mukaan:
function naytaSivu(){
v = valinta.value
//Piilotetaan ensin kaikki sivut
for(i=1;i
}
//Näytetään valittu
sivu[v].style.display = ""
}
var sivu = new Array()
sivu[1] = sivu1 (DIV-elementin nimi)
sivu[2] = sivu2
Poimi kaikki nimet:
Avainsanojen haku yhdellä kertaa säännönmukaisilla lausekkeilla:
\ b(first | second | third | etc.)\b
Voit myös kaapata tekstiä HTML-tagien välistä:
Tarkista näiden toimivuus IE6:ssa!
Haasteita luovuudelle saadaan, kun käytetään puolittamisen ja tuplaamisen filosofiaa!
(Eikä + 10 %)
Oleellista ei ole tehdä, vaan saada aikaan!
Tällöin tärkeätä on tietää, mitä tehdä!
Markat tulee markkinoilta, ei tuotteesta!
MIDI-synkka saadaan Atarin Cubasesta PC:n Cakewalkiin seuraavasti:
Cubasessa:
Master On
Sync On
Options-Syncronization… Send Midi Clock Atari
Cakewalkissa:
Settings-Clock-MIDI Sync On
Jotta JS-arrayn lajittelut toimisivat oikein eri kentissä, aja ensin jokaista kenttää varten
aputaulukot, joissa tietueet pysyvät oikeassa järjestyksessä lajittelujen jälkeenkin
Esim.
sanat[i] = a[i] sanasto suomeksi
words[i] = a[i] sanasto englanniksi
Lyhyet toiminnnanohjauskoodit JS:llä kannattaa sijoittaa suoraan HTML-elementteihin.
Esim.
<SELECT onchange="x=this.selectedIndex;englantisana.innerHTML=sanat[x].e">
x kertoo mikä vaihtoehto listalta on valittu
r-tietokannoissa voit indeksit id="a" pois. R-elementit ovat olioita jo sellaisenaankin!
r-elementtien lukumäärä saadaan selville:
kpl = document.all tags("r").length
Ensimmäinen elementti saadaan:
document.all.tags("r")[0]
Voit tulostaa osoitteelliset ryhmäkirjeet Excelistä seuraavasti:
1. Asiakasrekisteri Excel-taulukossa
2. Osoitetarra ajetaan rekisteristä toiseen Excel-taulukkoon
3. Valmis asiakaskirje tuodaan Excel-taulukkoon:
Insert-Object-Microsoft Word Document
4. Word-dukumentin reunukset poistetaan
5. Excel-taulukko tulostetaan makrolla
Range("A1")
[A1]
[a1]
[nimettyPaikka] [alku:loppu]
Cells(1,1)
Range("nimettyPaikka")
Voit yhdistää Excelin soluja isommaksi tekstilaatikoksi,
jossa teksti vierii hyvin riviltä toiselle:
Format-Cells-Alignment
v Wrap text
v Merge cells
Windows Media Player on hyvä ja monipuolinen soitin, joka soi myös Excelin UserFormilla.
Jotta se pysyisi piilossa ja toimisi, pitää MediaPlayer.Properties-kohdassa olla kaikki
Show-ominaisuudet = False
Tiedosto avataan soittimeen:
mp.FileName = "tiedosto"
Tiedoston avaus kestää hetken.
Tiedosto soitetaan:
mp.Play
Tiedoston avaus- ja soittokäskyä ei voi koodissa antaa aivan peräkkäin!
Vaihtoehtoiset tavat ilmaista sarakkeita:
Range("yksiSarake").Cells(1).Value
Range("montaSaraketta").Columns(2).Cells(1).Value
Timer-function käyttö odottamiseen:
t = Timer
Do
Loop Until Timer > t + 2
JS-tiedostojen haku Mozillan Firefoxiin onnistui, kun src oli näin:
<script src="file:///C:/tiedosto.js">
Firefoxia varten tapahtumat pitää kirjoittaa JS-koodiin eikä elementtiin:
Ei: <body onload="dothis()"
Vaan: window.onload = dothis
Firefox osaa lukea attribuuttien arvoja myös omista elementeistä
eli HTML-sivulla olevasta tietovarastosta.
Tietovarasto näyttää tällaiselta:
id pitää olla aina yksilöllinen!
Elementin, jonka id=101 attribuutin nimi arvo saadaan JavaSrciptillä seuraavasti:
nimi = document.getElementById("101").getAttribute("nimi")
Käytä aina edellisen mallista koodia. Se toimii kaikissa selaimissa.
Firefoxissa pitää ehdottomasti olla aina: document.getElementById
Omia elementtejä voidaan lukea IE6:ssa ja Firefoxissa myös näin:
r-elementtien lukumäärä sivulla:
kpl = document.getElementsByTagName("r").length
r-elementin 1 nimi-attribuutin arvo:
nimi = document.getElementsByTagName("r")[0].getAttribute("nimi")
Tässä menetelmässä ei siis tarvita id-attribuutteja ollenkaan,
koska selain osaa paikallistaa r-elementit olioina muutenkin!
XML-tiedostot avautuvat erittäin hyvin Excel2003:een!
Sarakkeet järjestyvät aakkosjärjestykseen sarakenimien mukaan.
if(anew > bnew) return -1
if(anew < bnew) return 1
return 0
ACDSee v. 3.0:ssa on hyvä kuvatietokanta kansioittain.
Kuville voi antaa kuvauksen = Description
näppäimistöltä komennolla Ctrl-D
Excel-taulukon ComboBoxissa pitää olla MatchEntry = 0
jotta siitä voisi hakea vaihtoehtoja sanan alkukirjaimella
Saat saksalaisen y:n eli ü-kirjaimen näppäinyhdistelmällä Alt-129
Voit avata tietyn hakemiston, valita sieltä haluamasi tiedoston ja avata sen seuraavasti:
' hak = Taulukon solussa oleva hakemistopolku
hak = ActiveCell.Value
'Vaihdetaan siihen hakemistoon
ChDir hak
'Näytetään hakemistossa olevat kaikki Excel-työkirjat ja valitaan niistä haluttu
tk = Application.GetOpenFileName("Taulukot, *.xls")
If tk = False Then
Exit Sub
Else
'Avataan työkirja
Set wk = Workbooks.Open (tk)
ActiveCell.Select
Set wk = Nothing
End If
Voit tehdä DIV-elementtien sisälle vaikka kokonaisia HTML-sivuja:
Sain toimimaan tapahtumaohjauksen Mozillan Firefoxissa ja IE6:ssa:
Seuraavalla JS-funktiolla luetaan hiiren kursorin paikan koordinaatit
function coords(evt) {
var e = (window.event) ? window.event : evt;
X.innerHTML = e.clientX
Y.innerHTML = e.clientY
}
<body onclick="coords(event)">
Huomaa että ominaisuus innerText EI TOIMI Firefoxissa!
Technics SX-KN901-keyboardin soittaminen tietokoneen MIDI-sekvensserillä
onnistui hienosti, kun:
Tee soittimesta General Midi:
1. paina MODE SET-näppäintä
2. valitse numero 8
3. valitse asetus "GENERAL MIDI
innerText-ominaisuus ja cells-kokoelma EIVÄT TOIMI Mozilla Firefoxissa!
innerText korvataan innerHTML-ominaisuudella
cells-kokoelma korvataan seuraavasti:
document.getElementsByTagName("td")[i]
jossa i on solun indeksinumero
Jotta valintanapit (radio button) toimisivat sekä IE:ssä että Mozillassa, pitää olla:
Huomaa, että pitää olla sekä id että name!
name-attribuutti pitää olla KAIKILLA napeilla SAMA
id-attrribuutti pitää olla KAIKILLA ERI
Radionappien käsittely JS-koodilla eli nappi 1 tehdään valituksi:
document.getElementById("i1").checked = true
document.getElementById("i2").checked = false
MS Paintissa voit kuvan rajauksen jälkeen käyttää suoraa komentoa:
"Kopioi mihin"
jolloin rajattu kuva voidaan tallentaa nimellä suoraan kovalevylle tai muistitikulle
Tällä yksinkertaisella keinolla voit kopioida tekstiä IE:ssä leikepöydälle:
window.clipboardData.setData("Teksti", myText);
Koodi EI TOIMI Mozillassa!
Siinä leikepöydän käyttö on tietoturvasyistä paljon monimutkaisempaa.
JS-merkkijonoissa voit toteuttaa lainausmerkkejä näinkin:
\"
tai
\'
Saat SELECT-valintalistalta valitun vaihtoehdon tekstin seuraavasti:
valikko.options[valikko.selectedIndex].text
jossa "valikko" on SELECT-elementin id- ja name-attribuutin arvo
Ääni-CD:n polttaminen uuden PC:n Nero Express-ohjelmalla onnistui hienosti:
1. Nero kopioi ensin alkuperäisen levyn kaikki raidat/tiedostot kovalevylle
2. Kovalevyltä voidaan valita halutut raidat/tiedostot
3. Koko levyn poltto kesti vain n. 10 min.
Tietojen saanti merkkijonosta olioon:
Merkkijono
r[0] = "1;Jukka Niemi;58"
Tietueet ovat siis JS-arrayssa merkkijonossa
Tietueen kentät voidaan lukea olioiden ominaisuuksiksi:
t[0].nro = 1
t[0].nimi = "Jukka Niemi"
t[0].ika = 58
JS-tietueet voidaan tuoda JS-tiedostona sovelluksiin myös ulkopuolelta!
Voit tehdä samalle HTML-sivulle DIV-elementteihin monta erillistä www-sivua.
Vain yhdessä DIV-elementissä oleva sivu näytetään kerrallaan.
Ratkaisu perustuu luokkien CLASS käyttöön, jolloin
STYLE-elementtien sisään HEAD-osassa määritellään luokat:
div.ei {display:none}
div.yes {}
div.ei -luokan elementit piilotetaan
div.yes -luokan elementti näytetään
Tehty erilaisia kokeiluja iframen käytöstä.
Mm. valitun tiedoston lataaminen iframeen.
var auto = [
[1, "Mersu", "300 sarja", 40000],
[2, "Volvo", "S40", 30000],
]
Yksi JS-lauseke on siis olioiden taulukko eli multidimensionalinen array!
xsl:sort EI TOIMI IE5:ssä
xsl:sort toimi hyvin IE6:ssa
Sain toimimaan erittäin monipuolisen ja hyvän multimedia-alustan selaimessa:
Microsoftin HTML + TIME
Kuvaesityksen malli:
C:\xml\html_time_kuvat.html
Musiikkiesitysten malli:
C:\xml\html_time_musics.html (jonoesitys)
C:\xml\html_time_musics2.html (yhtä aikaa esitys)
Imuroin hyvän MP3-recorderin
Super MP3 Recorder Pro
http://www.supermp3recorder.com/
Gold Waven äänilähde valitaan ja sen volume säädetään PC:stä:
Option-Control Properties
Volume device: Realtek HD Audio rear input
Äänityksen äänilähde valitaan Windowsista:
Ohjauspaneeli-Äänet ha äänilaitteet
Säädöt
Äänen nauhoittaminen
Realtek HD Audio rear input
Tarkista vielä "Nauhoitussäätimet" -->Voimakkuus
Microsoft Office Excel 2003:n versionumero on 11
Microsoft Office Excel 97:n versionumero on 8
Eli yhteys Excel 2003:een muodostetaan JavaScriptillä seuraavasti:
var xlApp = new ActiveXObject("Excel.Application.11")
<t:excl -elementin sisällä pystyy esittämään ajastetun jonoesityksen
<!--Koko esityksen ohjaus-->
<t:excl id="t1" begin="0" dur="60" class="time">
<iframe class="time" begin="0" dur="6" timeAction="display" src="sivu1.html" style="position:absolute;top:100;left:0;width:800;height:500"></iframe>
<iframe class="time" begin="6" dur="5" timeAction="display" src="sivu2.html" style="position:absolute;top:100;left:0;width:800;height:500"></iframe>
</t:excl>
ACDSee v. 3.0-kuvaohjelmassa voit tulostaa tietyn hakemiston tiedostolistauksen:
Tools: Generate file listing
Voit myös kopioida useampia hakemistoja eri hakemistoon.
PowerPointiin pystyy viemään koko kuvasarjan kerralla!
Tietojen saanti nykyisestä HTML-elementistä:
"function anna(nykyinen) {"
i = nykyinen.sourceIndex
Tietojen saanti nykyistä seuraavasta elementistä:
i + 1
Voit näyttää minkä tahansa nettisivun Excelin UserFormin WebBrowser-objektissa.
WebBrowserissa on TitleChange-tapahtuma, joka käynnistyy,
kun sivun title-attribuutti muuttuu.
document.title = merkkijono
Miten HTML+TIMEssa saadaan tietoja sillä hetkellä kohdalla olevan objektin ominaisuuksista?
Esim. kuvaraidan kuvista ja ääniraidan äänitiedostoista.
Ratkaisu: onbegin-tapahtuman hyväksikäyttö
Miten esityksen aikajanalla voidaan siirtyä tiettyyn paikkaan?
Ratkaisu: Seeking-toiminnon hyväksikäyttö
Windowsin API-funktioiden katseluun on kätevä ohjelma:
Api Viewer 2004 [Win32api.apv]
apv2004_v310
beginElementAt-menetelmä toimii hyvin,
- kun se on kirjoitettu sivun HEAD-osaan
- kun kohteen begin-attribuutille ei ole annettu arvoa ennakolta eli se on tyhjä
Sivulle lisätään ensin slider-objekti eli liukusäädin:
<object
ID="slider"
classid="CLSID:F08DF954-8592-11D1-B16A-00C0F0283628"
width=1200
height=30>
</object>
Lisätään slider-objektia varten scroll-tapahtumaksi seek()-funktio:
<script FOR="slider" EVENT="scroll">
seek()
</script>
Tällöin:
1. slider näyttää esityksen sijainnin
2. esityksessä voidaan siirtyä mihin kohtaan tahansa:
- hiirellä
- PageDownilla ja PageUpilla
Äänityksen aloitus = F8
Äänityksen lopetus = F9
Pikanäppäimet ovat vapaasti valittavissa:
Settings - Hotkey
Jotta soittaminen tietokoneen kautta kuuluisi tietokoneeseen kytketyistä kaiuttimista,
säädä kaikki voimakkuudet oikealle tasolle:
Ohjauspaneeli - Äänet ja äänilaitteet - Päävoimakkuus
Mikään toivottu Äänilähde EI saa olla vaimennettuna!
Huom. Erikoisesti Linjatulon säädöt!
C-kasettien siirto PC:lle onnistui hienosti:
1. Koko kasetin puoli äänitetään kerralla Super Mp3 Recorderilla
2. Signaali johdettiin vahvistimen korvakuulokeliitännästä Tascam 244:n kautta PC:lle
3. Kasetin kappaleet saadaan erilleen tallennetuksi "Save Selected As"-käskyllä
Voit tehdä itse Windows Media Player -soittimessa käytettäviä soittolistoja.
Nämä soittolistat ovat *.asx-loppuisia tekstitiedostoja
*.asx-tiedosto on määrämuotoinen xml-tiedosto
Tyhjien kenttien syöttö Access-titokantaan SQL-lauseella INSERT onnistui,
kun käytin syöttöön välilyöntiä!
Esim. VBA-lauseke: email = " "
Miten toteutetaan linkki viereiseen kehykseen:
<a href="sivu1.html" target="oikea">
Voit käyttää monisarakkeista valintalistaa ajonaikaisena tietovarastona,
josta tietoja voidaan lukea ohjelman käyttöön.
Jatkuvaa yhteyttä ulkopuoliseen tietokantaan ei tällöin tarvita.
Valintalista toimii tietovarastona myös piilotettuna ollessaan,
jolloin tiedot eivät näy käyttäjälleen sellaisenaan,
mutta ovat kuitenkin ohjelman käytettävissä.
Monisarakkeisen valintalistan voi luoda Excelin UserFormille tai
suoraan Excel-taulukkoon. Valintalistalla voi näyttää halutun määrän sarakkeita.
Tiedot eli taulukon tietoalue tuodaan ListBoxiin seuraavasti:
ListBox1.Properties:
ListFillRange: tietoalueen nimi
Käytä sovelluksissa hyväksi monisivuista UserForm-ratkaisua:
1. UserFormille tuodaan Page-controlli
2. Sivut tehdään sen Page1, Page2 jne. välilehdille
Page-kontrolliin saat uusia välilehtiä menemällä "otsikkoalueelle" ja
painamalla hiiren oikeaa näppäintä, jolloin voit valikosta valita vaihtooehtoja:
New Page
Delete Page
Rename…
Move…
Yhden käyttäjän/koneen tietokantasovelluksissa tietokanta kannattaa avata vain kerran alussa
ja sulkea lopussa.
Tietokannan nimi ja viittaus siihen nimetään julkisina muutujina Module-osan alussa.
Myös tietokannan avaus- ja sulkualiohjelmay on sijoitettava Module-osaan.
Kerta-avaus nopeuttaa huomattavasti sovelluksessa tehtäviä kyselyjä.
Jos tietokannan sijainti muuttuu, muutos tarvitsee tehdä vain yhteen paikkaan.
Voit avata ja katsella minkä tahansa tiedoston sisältöä Excelin UserFormin
WebBrowser-selainikkunassa:
UserForm1_Initialize()
WebBrowser1.Navigate (hakupolku)
Voit avata selainikkunaan:
- Excel-työkirjan
- Word-dokumentin
- kuvatiedoston (avautuu kuvaohjelmaan)
- nettisivun
Voit tulostaa UserFormin bittikuvana seuraavasti:
UserForm1.PrintForm
Voit avata ja katsella minkä tahansa tiedoston sisältöä ja tehdä siihen muutoksia
omassa teko-ohjelmassaan väliaikaisten hyperlinkkien avulla:
1. Tee väliaikainen hyperlinkki Excelin soluun:
ActiveSheet.Hyperlinks.Add Anchor:=Range("A1") Address:="C:\polku\tiedosto.doc"
2. Avaa tiedostolinkistä koodilla:
ActiveSheet.Range("A1").Hyperlinks(1).Follow
3. Poista hyperlinkki taulukosta:
ActiveSheet.Range("A1").Hyperlinks(1).Delete
Excelin UserFormin MultiPage-kontrollin sivuille (Page1, Page2…) sijoitetut objektit
sijaitsevat UserFormin "säiliössä".
Siksi niiden koodit löytyvät UserFormilta eikä MultiPagelta!
Viimeisimmän asiakasnumeron haku tietokannasta SQL-kyselyllä:
mySQL_nro = "SELECT MAX(Asnro) FROM asiakasrek"
Set myRS = myDB.OpenRecordset(mySQL_nro)
If (Not myRS.BOF = True) And (Not myRS.EOF = True) Then
myRS.MoveFirst
asnro = myRS(0).Value
Else
' Jos tyhjä asiakasrek, annetaan haluttu enimmäinen arvo
asnro = 1000
End If
asnro = asnro + 1
Ohjelmakoodi on myös esimerkki siitä, miten tietoja saadaan ulos recordsetin ainoasta tietueesta.
Miten inhottava vihreä "virhekolmio" saadaan pois Excelin solusta:
Työkalut - Asetukset - Virheentarkistus:
Ei kruksia kohdassa: Tekstimuotoinen pvm, jossa kaksinumeroinen vuosiluku
Jotta pvm-muotoilu toimisi oikein Excel-solussa VBA:lla tietoja syötettäessä:
Cells(r, 4).NumberFormat = "d.m.yy;@"
Type-statement toimii Excelissäkin,
mutta se ja aliohjelma on kirjoitettava Module-osaan!
JavaScriptin säännönmukaisten lausekkeiden testilausekkeissa
isoilla ja pienillä kirjaimilla on eri merkitys:
Vrt. ryhma.match ja Ryhma.match
Salasanan kysymisohjelma tehdään kyseisen sivun (Worksheet) Visual Basic-osaan:
Worksheet_Activate()
salasana = InputBox("Anna salasana", "SALASANA")
If salasana = "salasanasi" Then
Sheets(x).Activate
Else
MsgBox "Sinulla ei ole oikeuksia tälle sivulle!"
Sheets(1).Activate
End if
Koodissa x on sen taulukon numero, jolle pääsyä tarkkaillaan.
Sheets(1) on se taulukko jolle käyttäjä ohjataan, kun hänellä ei ole oikeuksia.
Tämän hetken paras kosketinsoitin on:
punainen Nord Electro V2.0
1. 5-oktaavinen keyboard
2. 6-oktaavinen keyboard
Näissä on ainoastaan piano- ja urkusoundit, mutta hyvät sellaiset!
Yrityksellä on oltava tarkoitus, joka jatkuvasti muistuttaa
sekä omistajille, johdolle että henkilöstölle siitä,
missä yrityksen on oltava hyvä, jotta se voisi menestyä.
Tulos tulee menestymisestä oman tarkoituksen toteuttamisessa,
ei muusta, ei ainakaan pidemmällä aikavälillä.
Matti Lainema: Hyviä yrityksiä. Ajatuksia johtamisesta. WSOY 2005 s. 81
Onni ja menestys, onnellinen sattuma = tuuri
Tuuri ei ole pelkkää sattumaa, vaan:
Liike, uteliaisuus ja ahkeruus lisäävät tuuria.
Matti Lainema: Hyviä yrityksiä. Ajatuksia johtamisesta. WSOY 2005 s. 98
Strategisen suunnittelun on korvannut nykyisin:
- jatkuva reaaliaikainen seuranta
- muutosten hyödyntäminen
- nopeat suunnan tarkistukset ja muutokset tarvittaessa
Matti Lainema: Hyviä yrityksiä. Ajatuksia johtamisesta. WSOY 2005
Olennaista on suunnata intressit ja voimavarat jatkuvasti uusille alueille.
Matti Lainema: Hyviä yrityksiä. Ajatuksia johtamisesta. WSOY 2005
Array sijoitetaan toiseen arrayhin:
a = a2
Kun nyt array a2 lajitellaan:
a2.sort(byKirjain)
Tästä lajittelusta seuraa, että array a:kin tulee samalla lajitelluksi!
Valintalistojen toiminnan varmistamiseksi kannattaa tehdä seuraava rajoitin:
Koodin alkuun laitetaan:
if (valinta != 0 && valinta < kpl + 1)
jossa:
valinta = valintaLista.options[valintaLista.selsctedIndex].index
Tämä valinta-lauseke voi olla:
- itse elementissä
- JS-koodissa
Wordissä on valmiina erittäin hyvä joukkokirjeiden ja osoiteluetteloiden opastettu tekosysteemi:
Työkalut - Kirjeet ja postitus - Yhdistäminen
Itse VBA:lla luotujen Access-tietokannan taulujen tuonti Wordin vastanottajaluetteloksi onnistui hyvin!
Joukkokirjeet = Yhdistäminen
Word-opas s. 651-
Pitkien asiakirjojen hallinta perusasiakirjojen avulla:
Word-opas s. 539-
Saat HTML-taulukon paremman näköiseksi lisäämällä jokaisen solun alkuun:
pakotetun välilyönnin eli
eli merkkijonoissa:
mj += " " + nimi + "
Tietokantasovellusten toiminnan varmistamiseksi ja virheiden eliminoimiseksi:
Ole tarkkana Dim-määrittelyjen suhteen!!
VB-koodin alussa on ehdottomasti oltava:
Dim myDB As Database
Dim myRS As Recordset
Muista myös heti aluksi kytkeä päälle viittaus DAO-objektiin!
Tallenna työsi kahdelle eri muistitikulle ja tikut kahteen eri paikkaan varmaan talteen!
Kappaleiden alkukirjaimet nettisivulla isommalla tekstikoolla:
A
Muotoilu tapahtuu tyyliluokan ".aloittava" tyylin avulla.
Huomaa, että vaikka jokainen merkki on mahdollista muotoilla erikseen, jos niin haluat.
Lehtijutut syntyvät neljästä raaka-aineesta:
1. Oma asiantuntemus
2. Kirjalliset ja sähköiset lähteet
3. Haastattelu
4. Havaintojen teko
Äänitiedostojen muunto käy käyevästi GoldWave-ohjelmalla.
43 sekunnin pätkä Lapin huilu -kappaletta eri tiedostomuotoina:
40mono.mp3, monoääni, 48 kbps, 251 kt
40s.mp3, stereoääni, 80 kbps, 418 kt
Äänen pakkaaminen mp3-muodossa mahdollistaa äänitiedostojen käytön nettisovelluksissa.
Äänen laatu on vielä aivan kohtalainen.
Ihmisillä on viisautta ja tietoa,
he eivät vain aina tiedä,
että he tietävät.
Milton H. Erickson
Rentoutumisen taitoa voi käyttää
1. Oman hyvinvoinnin ja onnellisuuden lisäämiseen
2. Itsensä kuunteluun
3. Oppimisen helpottamiseen
4. Oman viisauden jalostamiseen
5. Oman viisauden hyödyntämiseen
kuvat, bmp
Poltettu omat Kodakin kuva-CD:n kuvat bmp-muodossa CD:lle.
Kodakin formaatti ei avaudu enää nykykoneille (Windows XP?)
Tämän sovelluksen avainsanat on tallennettu Excel-tietokantaan:
C:\HTML2006\Sanarek.xls
Listaa elämäsi hyvät asiat, joiden toivot säilyvän!
Tee itsellesi kiitollisuusvihko
Tiedostotunnisteen (esim .bmp) saat näkyviin Windows XP:ssä:
1. Ohjauspaneeli
2. Kansion asetukset
3. Tiedostotyypit
- valitse listalta BMP
4. Lisäasetukset
- kruksi kohtaan "Näytä tunniste aina"
Kaikki tiedostotyypit näkyviin:
1. Ohjaupaneeli
2. Kansion asetukset
"Näytä" -välilehti:
Kruksi pois kohdasta: Piilota tunnettujen tiedostotyyppien tunnisteet
C:\HTML2006\filterAsiat2006.html
- toimiva uusin versio
- 535 asiaa vuosilta 2000-2006, vihkosta 14 lähtien
- valintalistalla 50 tärkeintä hakusanaa
kotinetti.suomi.net/kojola
Ulrich Bauerin Marjoniemen sukukirjan tiedot siirretty levykkeeltä omalle koneelle:
C:\Sukutukimus\Marjoniemen sukukirja
parentNode -ominaisuudella pääset käsiksi elementin isäelementtiin
eli objektirakenteessa ylöspäin
document.getElementsByTagName("H3")[i].parentNode.style
Excelin VBA:ssa pitää käyttää ominaisuutta Parent
<DIV style="position:absolute; top; left; width; height; overflow:scroll" >
Mitä sellaisia taitoja ja kykyjä sinulla on, jotka auttavat sinua saamaan aikaan haluamiasi asioita?
Menneisyyttä tutkitaan taitovarastona, jossa on tärkeää kiinnittää huomio onnistumisiin
ja haasteiden voittamiseen tai niistä selviytymiseen.
Ei keskitytä menneisyyden epäonnistumisiin!
Hyvä klassisen musiikin nuottiarkisto netissä:
www.pianostreet.com
Nuotit pdf-tiedostoina
Kuukausimaksu oli 3 $/kk
Voit scannata kuvia Agfan tasoskannerilla vanhalle POMI-tietokoneelle ja
sitten polttaa kuvat POMIN Adaptec Easy CD Creator-ohjelmalla CD:lle.
Voit hyvin lisätä materiaalia aikaisemmin poltetuille CD-levyille, jos niille vain mahtuu lisää!!
Imuroitu ilmainen VertrigoServ -palvelinohjelmistopaketti.
Se sisältää kaikki ohjelmistot PHP-koodin kokeilemiseksi omalla kotikoneellasi.
VertrigoServ käynnistyy Työpöydän kuvakkeesta ja sen eri osia voit käyttää
kuvaruudun alareunan ikonista
Paras ohjelma kuvien rajaamiseen ja koon muuttamiseen minulla on:
Microsoft Office Picture Manager
Dataniemen kotisivut siirretty tänään oman domainin alle ammuu.com:iin
www.jukkaniemi.net
PHP-tuki toimi ammuu.com:ssa
mySQL-tietokanta ei toimi minun valitsemassani palvelupaketissa
Imuroitu omalle koneelle virallinen PHP-dokumentaatio suomeksi:
PHP Käsikirja.htm
- yli 2000 sivua asiaa!!
Lisäksi imuroitu:
Antti Laaksosen Käytännön PHP-opas:
C:\phpj\php_1.htm …php_9.htm
<?php
$tiedosto = "tiedosto.txt";
include ($tiedosto);
#skripti tulostaa tiedostossa olevan tekstin sivulle tähän kohtaan
?>
VertrigoServ-paketin eri osien tunnukset ja salasanat:
MySQL/pHpMyAdmin: root/vertrigo
SQLiteManager (admin): admin/admin
SQLiteManager(data): data/data
SQLiteManager(guest): guest/guest
Uusi mySQL-tietokanta on kätevintä luoda pHpMyAdmin-ohjelman
aloitussivun localhost-osassa:
"Luo uusi tietokanta"
Kun tietokanta on luotu, uusia tauluja voidaan luoda:
1. Luo uusi taulu tietokantaan
2. Nimi:
3. Kenttien lukumäärä:
4. Anna kenttien nimet ja tyypit
Tietoja lisätään tauluihin: "Lisää rivi"
localhost-osoite:
http://127.0.0.1/
tai
http://localhost/
$viestit = file("vieraskirja.txt");
- file jakaa tekstitiedoston rivit alkioiksi viestit-taulukkoon
- tekstitiedostossa pitää olla rivinvaihdot rivien välillä
PHP:n funktiolistat löytyvät myös VertrigoServin etusivun kohdasta:
"View loaded PHP extensions"
Ladattavien extensions (moduulit) sijainti koneellani on:
C:\Program Files\VertrigoServ\php\ext
Itsekasvavan kentän luominen mySQL-tauluun:
CREATE TABLE taulu (id int not null primary key auto_increment)
Ison tekstitiedostossa olevan XML-muotoisen tietokannan tuonti sovellukseen
onnistuu PHP:llä helposti.
Tietokantaa voi sitten jatkokäsitellä PHP-sovelluksessa jo olevilla JavaScript-tekniikoilla.
PHP:n avulla voit jopa lisätä tietueita tähän tietokantaan pysyvästi.
mySQL:n käyttöopas löytyy netistä:
www.mysql.com/doc/
mySQL:n API-osuudesta löytyy myös
mySQL:n tauluilla ei ole kokorajoitusta!
Tein lounasravintolan ruokalistasovellukset PHP:llä
Asiakassovellus: ruokalista.php
Hallintasovellus: hallinta.php
Tietokanta: ruokalista.txt
Listan asiat R-elementeissä
Voit tuoda JavaScript-koodia erillisestä JS-tiedostosta PHP:llä suoraan HTML-sivulle.
Tämä mahdollistaa tietojen tuonnin/viennin suoraan JS-arraysta, joka on myös pelkkä
tekstitiedosto.
Hyvä ohje käyttöoikeuksien antamisesta mySQL-tietokantoihin:
Julie Meloni: MySQL s.60-62
GRANT SELECT, INSERT
ON myDB.*
TO john@"%"
IDENTIFIED BY "99hjc";
Annetaan katselu- ja lisäysoikeudet tietokannan kaikkiin tauluihin
käyttäjälle john miltä tahansa koneelta
käyttäjälle, jonka salasana on "99hjc"
Pyri estämään HTML-lomakkeilta tulevat turhat välilyönnit:
<?php
echo $lomakemuuttuja;
?>
Edellä olevassa php-koodissa ei saa olla minkään rivin lopussa välilyöntiä!
Voit siirtää muuttujan arvot helposti PHP:stä JavaScriptiin seuraavasti:
Lisää suoraan JavaScriptin sekaan:
php-alkutagi
echo 'nimi = "' . $nimi . '"';
php-lopputagi
alert(nimi)
Mitä tahansa HTML-elementtejä pystyy lisäämään koodilla näin:
Luodaan ensin uusi R-elementti muistiin
var oNewNode = document.createElement("R");
Liitetään luotu elementti olemassa olevan elementin lapseksi
elementinNimi.appendChild(oNewNode);
Pystyt poistamaan minkä tahansa lapsielementin seuraavasti:
Poistetaan r-elementti toiselta riviltä:
elem = document.getElementsByTagName('r')[1];
r2.parentNode.removeChild(elem)
www.phpjunkyard.com
Objektimuuttujan olemassaolo voidaan aina tarkistaa:
if($muuttujanimi){
jos muuttuja on olemassa, mitä silloin tehdään
}
Jonkin tiedon mukaan attribuuttiarvon enimmäispituus pitäisi olla 1024 merkkiä (HTML 2.0)
Tehty seuraavat verkkokauppaohjelmiston osiot:
Verkkokauppa: cBox.php
tuoterekisterin_hallinta.php
tilaukset.php
Tulosjoukkoa rajoitetaan SQL-kyselyissä LIMIT-määreellä:
LIMIT 0, 25
LIMIT 26 ,25
Ensimmäisessä otetaan mukaan 25 ensimmäistä tietuetta
Toisessa 25 seuraavaa tietuetta
Imuroitu Exeliä varten mySQLODBC-ajuri:
mysql-connector-odbc-3.51.12-win32.zip
- asennettuse ja löytyi myodbc3.dll
- ajuria ei kuitenkaan löytynyt VBA:n referenssilistalta
- ajuri kuitenkin toimi ADO:n kanssa 14.12.
PHP-taulukoissa voi indeksin paikan jättää tyhjäksi:
$taulukko[]
$taulukko[]
Tällöin arvot tallentuvat oikealle indeksinumerolle esiintymisjärjestyksessä
Voit välittää samalta HTML-lomakkeelta samanaikaisesti useita eri toimintoja php-koodille:
input type=submit name=toiminto value="Tallenna"
input type=submit name=toiminto value="Poista"
HTTP-merkkijonoilla voit lähettää kätevästi mitä tahansa tietoa sovelluksen ja www-palvelimen välillä.
Tiedot voidaan lukea myös mySQL-tietokannasta. Välittävä sivu on palvelimella.
Voit lähettää salasanoja salattuna mySQL:ssä seuraavasti:
INSERT INTO kayttaja(tunnus, salasana) VALUES('jukka', PASSWORD('aurinko')
Käyttäjätunnukset ja salasanat voit tallentaa erilliseen tietokannan tauluun,
jolloin .htaccess-toimintoja ei tarvita palvelimella ollenkaan eikä sen oikeuksia!!
Voit hakea tietyn tekstitiedoston helposti palvelimelta HTTP:n URL:illa:
http://127.0.0.1/hakemisto/hae.php?url=http://www.joku.fi/tekstit.txt
Saat luettua suoraan tämän tiedoston riveittäin PHP-taulukkoon seuraavasti:
$taulukko = file($url)
..\www.\hakemistolistaus.php
Jotta tiedostojen lähettäminen lomakkeen muiden tietojen mukana palvelimelle onnistuisi,
pitää form-määritykseen lisätä enctype=multipart/form-data
Yhteys Excelistä mySQL:ään onnistui vihdoin ADO:n avulla.
Palvelin ja mySQL pitää tietenkin olla tällöin käynnissä ja ADO:n referenssi kytkettynä projektiin.
Yhteydenmuodostuskoodi on VBA:lla seuraavanlainen:
Dim Source As String
Dim Connect As String
Dim RS As New ADODB.Recordset
Source = "SELECT * FROM varasto"
Connect = "Driver={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=jukan_db; USER=root; PASSWORD=vertrigo; OPTION=3;"
RS.Open Source, Connect
Excel-taulukon ajo riveittäin INSERTillä Access-kantaan:
C:\Kallela\Insertkoe.xls
Tehty 11.6.06
Jos kenttä on määritetty avainkentäksi, siinä ei voi olla samoja arvoja,
joten on vaarallista asettaa tekstikenttiä avainkentiksi.
Aseta aina avainkentäksi numeerinen kenttä automaattisella lisäyksellä.
MAHTAVA INNOVAATIO:
Sain vihdoin toimimaan tietojen lisäämisen Excel-taulukosta mySQL-tietokannan tauluun
VBA:lla ja ADO:lla siten, että kaikki rivit lisätään kerralla saman ADODB-yhteyden aikana!!!
phpMyAdmin-ohjelmalla pystyy tekemään mySQL-tietokannan taulusta XML-tiedoston:
C:\HTML\xml\jukan_TABLE_1.xml
Sain tänään toimimaan:
1. mySQL-tietokannan luonti ADO:lla ja myODBC:llä Excelistä käsin
2. mySQL-tietokannan taulun luonti ADO:lla ja myODBC:llä Excelistä käsin
3. taulun luontikoodin luku Excel-taulukosta käsin
Tietokoneen MIDI-sekvensseriohjelmasta voit äänittää suoraan Super MP3 Recorderiin
Super MP3 Recorderilla pystyy tekemään myös "päällekkäisäänityksiä":
1. Valmiit taustat MIDI Orchestratorista
2. Melodia tai laulu lennosta mukaan tietokoneen linjasisääntulosta
mySQL-ohjelma sijaitsee koneellani kansiossa:
…\mysql\bin
DATE: VVVV-KK-PP
DATETIME: VVVV-KK-PP TT:MM:SS
TIMESTAMP 14: VVVVKKPPTTMMSS
TIME: TT:MM:SS
Hyvä ohjekirja:
Rami Heinisuo: PHP ja MySQL, Tietokantapohjaiset verkkopalvelut, Talentum
DATETIME-muodossa olevat kenttien sisällöt piti laittaa Excel-taulukossa näin:
välilyönti0000-00-00välilyönti00:00:00heittomerkki
R-elementin attribuuttiin mahtui kokeessa tänään ainakin 4701 merkkiä pitkä merkkijono!
Suunnittele erilailisa nettifoorumeita PHP:llä työrymäkäyttöön
Automaattisten aikatietojen rekisteröinti ja lähetys PHP:llä:
Jos lähetystiedosto on laheta.php ja sen form action="laheta.php",
niin aikaleimaukseksi $aika = time() tulee todellinen tietojen lähetysaika
eikä sivun ensilatausaika!!
Muitakin muuttuja-arvoja voi varmaan lähettää näin "viimehetkellä"?
Voit välittää funktioiden parametreja HTTP-linkeissä uusille avautuville PHP-sivuille
ja toteuttaa näin todella dynaamisia www-juttuja:
1. Määritellään funktio PHP-kohdesivulla:
function funktion_nimi($parametri1, $parametri2, …jne)
2. Ajetaan funktio samalla sivulla heti perään:
funktion_nimi($parametri1, $parametri2, …jne)
3. Parametritiedot annetaan lähdesivulta HTML-linkeissä näin:
a href="kohdesivun_nimi.php?parametri1=arvo1¶metri2=arvo2"
Samalla tavalla voit lähettää mitä tahansa PHP-muuttujien arvoja sivulta toiselle:
a href="kohdesivun_nimi.php?muuttuja1=arvo1&muuttuja2=arvo2"
Voit asettaa taustakuvan Excelin laskentataulukkoon:
Worksheets("Taul1").SetBackgroundPicture "kuvatiedosto.jpg"
Lyhyin ja helpoin ilmaus alueiden valitsemiseksi Excel-taulukosta:
Me.[a1.b10].Select
Huomaa, että voit käyttää solualueen erottimena myös:
- pistettä
- pilkkua
- kaksoispistettä
- kahta perättäistä pistettä
Nimetyissä alueissa toimii myös (lainausmerkkejä ei siis tarvita):
[aluenimi].Select
Voit käyttää Excelin Range-objektie muuttujien kanssa myös näin:
Range("a" & rivinro).Value = jotakin
Sain toimimaan auto_increment-ominaisuuden Access-tietokannan tauluissa näin:
CREATE TABLE taulun_nimi ("id COUNTER, nimi TEXT(50), …")
Jotta COUNTER-kenttä aloittaisi jostakin tietystä luvusta (esim. 1001),
laita ensimmäinen rivi tauluun manuaalisesti SQL-lauseella:
INSERT INTO taulun_nimi (id, nimi, …) VALUES('1001', 'Jukka', …)
Laita seuraavat rivit tauluun SQL-lauseella:
INSERT INTO taulun_nimi (nimi, …) VALUES('Jukka', …)
Sain toimimaan auto_increment-ominaisuuden Access-tietokannan tauluissa näin:
CREATE TABLE taulun_nimi ("id COUNTER, nimi TEXT(50), …")
Jotta COUNTER-kenttä aloittaisi jostakin tietystä luvusta (esim. 1001),
laita ensimmäinen rivi tauluun manuaalisesti SQL-lauseella:
INSERT INTO taulun_nimi (id, nimi, …) VALUES('1001', 'Jukka', …)
Laita seuraavat rivit tauluun SQL-lauseella:
INSERT INTO taulun_nimi (nimi, …) VALUES('Jukka', …)
Jotta COUNTER aloittaisi jostakin tietystä luvusta (esim. 1001,
laita taulun ensimmäinen rivi manuaalisesti.
filterAsiat2006.html hakee nykyisellään asiat koko tekstisisällöstä eli P-elementin sisällöstä.
MySQL-datan vieminen Exceliin flatfile-tekstitiedostona onnistuu seuraavasti:
SELECT * INTO OUTFILE "varasto.xls"
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
FROM varasto
Tämä SQL-kysely onnistui hyvin VertrigoServin phpMyAdmin-ohjelmasta.
JavaScript-linkit voit toteuttaa näinkin:
< a href="#" onclick="funktio()" >
HTML-lomakkeen lähettämisen voit php:ssä tarkistaa seuraavasti:
if(isset($_POST['submit']))
Sarake-yhteensä-summakaavat voit toteuttaa näinkin:
Range("d"&r).FormulaR1C1 = "=SUM(R[& -r + 4 &"]C:R[-1]C)"
missä 4 = miltä riviltä taulukossa kaava alkaa.
Miten selvitetään linkin omaavat painikkeet Excel-taulukosta?
Painikkeiden ja muiden graafisten objektien lkm sivulla:
kpl = ActiveSheet.Shapes.Count
Sivulla olevien objektien läpikäynti:
For i = 1 To kpl
If ActiveSheet.Shapes(i).OnAction <> "" Then
mj = ActiveSheet.Shapes(i).OnAction
…
mj = linkin makron nimi hakupolkuineen
Palauttaa merkkijonosta merkin esiintymiskerrat:
substr_count(strtolower($lause), $haettava)
Suuren lomakemuuttujamäärän käsittely PHP:llä:
for($i = 1; $i < $kpl: $i++){
$rivi = "r" . "$i";
fputs($tiedosto, ${$rivi} . "\r\n");
}
Huom! Muuttuja toisen muuttujan nimiosassa, jolloin on käytettävä aaltosulkuja!
Voit määrittää kuvaryhmälle perusnimen, jolloin jokaista kuvaa ei tarvitse nimetä erikseen.
Voit esittää kuvia monen eri tekijän mm. avainsanan perusteella!
Jos PHP-muuttujaan lisätään jotakin merkkijonossa, on ne laitettava sulkuihin:
. ($i + 1)
Jos php:n for-lauseessa pitää edetä enemmän kuin yksi askel:
for ( $i = 1; $i < 60; $i = ($i + 5)) {
Huomaa sulkumerkit!
Accessin MEMO-kenttään mahtuu:
- useita lauseita tai kappaleita
- jopa 32 kt tekstiä
Rivinvaihto MEMO-kentän TextBoxissa: CTRL-ENTER
Aikaleimausten anto Access-tietokannoissa:
Custon Formats/Date/Time
yyyymmdd hhmm
Hiiren keskipyörä vierittää www-sivua hyvin innovatiivisesti:
Näkyviin tulee "nappi", josta voi säätää kelausnopeutta ja -suuntaa.
Toimii myös Excelissä ja Wordissä
Sekä IE:ssä että Mozillassa toimiva tyylin valinta JavaScriptillä:
document.styleSheets[0].cssRules[0].style.display = "none"
Asiaa koskeva ohjedokumentti: C:\html2006\domstylesheets.htm
if(!isset ($_POST['submit']))
Eli tarkistetaan, onko "Submit"-painiketta painettu.
Tekstin kopiointi tekstiboxista taulukkoon onnistuu seuraavasti:
TextBox1.SelStart = 0
TextBox1.SelLength = TextBox1.TextLength
TextBox1.Copy
Aktivoidaan haluttu taulukko
ActiveCell.PasteSpecial
Vaikka tiedot on tuotu monisarakkeiselle valintalistalle tietokannasta,
valintalistalta valitun rivin tietylle sarakkeelle on mahdollista tuoda lennosta uusi arvo/merkkijono.
Ei aina kannata päivittää valintalistaa tietokannasta käsin.
Nopeampaa on kirjoittaa muutokset suoraan valintalistalle näkyviin!
GoldWavessa Copy To kopioi valinnan suoraan uuteen tiedostoon.
Voit äänittää yhtä aikaa GoldWavella ja Super Mp3 Recorderilla seuraamalla GoldWaven hyvää volumenäyttöä!
Seuraavat SQL-kyselyt toimivat:
Montako asukasta:
SELECT count(asukas)
Kokonaismyynti:
SELECT sum(Kpl * Hinta)
Ehdollinen taulujen perustaminen EI toiminut Access-tietokannoissa!!
Monipuolinen MySQL-tietokantaluokan käyttöesimerkki:
mysql_class1.php
Siinä on taulukon lajittelu lennosta!
W. Jason Gilmore: PHP & MySQL. Tehokas hallinta s. 651-
Jotta UserForm olisi koko työskentelyn ajan näkyvissä, pitää sen ShowModal-ominaisuus olla False.
mySQL-taulut kannattaa luoda PhpMyAdmin-sovelluksella.
Taulun luontikoodin voi tuoda siihen kopioimalla tekstitiedostosta.
Neutech-web-hotelli-palvelun tilaus Datakolmion Jarno Mattilalta Oulaisista.
Käynti Oulaisissa.
Sain toimimaan mySQL-taulun ajon Excel-taulukkoon PHP-sovelluksesta käsin.
Ratkaisu on SQL-kysely:
SELECT * INTO OUTFILE …
2.1. tämä toimi vain ohjelmasta PhpMyAdmin käsin, nyt myös PHP-sovelluksesta!!!
Tyhjä recordset selvitetään näin:
If myRS.EOF = True Then
GoldWavessa voi valitun alueen kopioida suoraan tiedostoon seuraavasti:
Edit - Copy To…
Ei kannata leikata alkuja ja loppuja pois, vaan vain kopioda valinta!!
Voit myös merkata kiinnekohdat lennosta:
Ctrl-q
Kenttien ja merkkijonojen yhdistäminen SQL-kyselyissä tapahtuu seuraavasti (s. 34):
SELECT sukunimi ||' '||etunimi
tai
SELECT [sukunimi] & " " & [etunimi]
VB s.113
VBA:ssa toimi vain tämä:
SELECT sukunimi & ' ' & etunimi AS asnimi FROM asiakasrek
Tallennetun polttoprojektin saat avattua Nerossa:
*.nra
What would you like to burn?
- Disc Image or Saved Project
Public-muuttujat kannattaa määritellä Module-osassa.
Ne eivät toimineet UserFormilta käsin!
Jotta taulukossa oleva ListBoxi päivittyisi kun tietoja taulukkoalueella muutetaan tai lisätään,
pitää ListBoxin AutoLoad olla True!
phpMyAdmin-ohjelmaan pystyy tuomaan tietoja CSV-muodossa.
Tiedostot voi tuoda oman koneen hakemistosta.
Taulun pystyy viemään pois myös Excel-versiona.
Ensimmäinen yhteys PHP-sovelluksella Neutechin mySQL-palvelimelle onnistui!!!
Neutechin palvelimella olevaa mySQL-kantaa pystyi käyttämään myös
ammuu.com -sovelluksesta käsin!
Accessissa on Currency-tietotyyppi raha-kentille
Miten ODBC-tietolähde kytketään:
1. Ohjaupaneeli
2. Valvontatyökalut
3. Tietolähteet (ODBC)
4. Käyttäjätietolähde
Voit lyhentää SQL kyselyä useista tauluista seuraavasti:
SELECT taulu1.*, taulu2.asnimi FROM taulu1, taulu2
jolloin tulee taulu1:n KAIKKI kentät!
Excel-taulukossa olevaan ListBoxiin viitataan:
Me.ListBox1 eikä Me.Shapes("ListBox1")
Excelin ListBoxien sarakemäärän maksimi VBA-sovelluksissa on valitettavasti vain 10 !!
Jos tietokannan tauluissa on kenttiä enemmän, täytyy tietoja yhdistellä sarakkeisiin.
Tyhjäarvojen tuonti valintalistoille ja ohjelman kaatumiset estetään:
If Not IsNull(myRS(1)) Then
.List(i,1) = myRS(1)
Integeriä suurempi tietotyyppi Accessissa on LONG.
Suurin luku siinä on 2.147.483.648
Jotta saman valinnan voisi tehdä uudelleen ListBoxin click-tapahtumalla,
pitää valinta ensin poistaa seuraavasti:
ListBox1.ListIndex = -1
Tooltipsin voit lisätä myös Label-kontrolliin!
Taulu liitetään tietokantaan seuraavasti:
myDB.TableDefs.Append taulu
Kaikki rahasummat ja desimaaliluvut, jotka luetaan taulukosta tietokantaan VBA:lla
pitää käsitellä:
total = Cells(1,1).Value
total = Format(total, "#0.00")
total = Replace(total, ",", ".")
Väärät pilkut haittaavat aina SQL-lauseessa INSERT!
Mozilla laskee ajat eri tavalla kuin IE!
Kulunut aika lasketaan seuraavasti:
IE = nyt - vuosi
Mozilla = 1900 + nyt - vuosi
Miten päästään takaisin edelliselle HTML-sivulle:
onclick = javascript: history.back()
Miten lähetetään muuttujatietoja toiselle sivulle:
function nextpage(href, kuva) {
location.href + "?" + kuva
Tiedot otetaan vastaan toisella sivulla:
kuva = location.search.substring(1)
Huom. Merkki 0 = ?
Application.SheetsInNewWorkbook = 9
Workbooks.Add
KeyDown-tapahtumaan liitettävä koodi:
If KeyCode = vbKeyReturn Then
koodirivit jotka halutaan suorittaa
End If
KeyDown- ja KeyUp- tapahtumat toimivat KeyCoden avulla.
KeyPress toimii KeyAsciin avulla
KeyPress toimii vain kirjainnäppäinten kanssa, se EI toimi esim. Enterin kanssa!!
UserFormilla olevan tietyn CommandButtonin toiminnan käynnistäminen Enter-näppäimellä:
CommandButtonin (vain yhden) Default-ominaisuudeksi annetaan True!!
IN-operaattori mahdollistaa vaihtoehtojen antamisen SQL:ssä:
IN(1935,1944,1954)
PHP-sovelluksen aloitussivu käynnistetään ulkopuolelta linkistä:
kuvaohjelma.php?i=0
Eli välitetään sivua merkitsevän muuttujan arvo
Uusi tapa hakea viimeinen täysi solu listalta Excel-taulukosta:
Dim LastRow As Object
Set LastRow = Sheet1.Range("a65536").End(xlUp)
Kirjoitetaan tyhjälle riville:
Last.Row.Offser(1, 0).Value = "jotakin"
Excel-taulukossa piilossa olevalle alueelle pystyy kirjoittamaan ja sieltä lukemaan tietoja VBA:lla
PowerPointiin pystyy tuomaan koko kuvasarjan kerralla:
Lisää - Kuva - Uusi valokuva-albumi
Lisää kuva lähteestä:
Tiedosto tai levy…
- valitse lisättävät kuvat
Paina "Lisää"
Paina "Luo"
Microsoft Excelin VBA:ssa on Microsoft Office Spreadsheet 11.0 -kontrolli,
jolla voit tuoda Excel-taulukon UserFormille.
Siihen viitataan koodissa:
Me.Spreadsheet1.Cells(x, y)
Voit varmuuskopioida ja siirtää tiedostoja VBA:lla:
FileCopy SourceFile, DestinationFile
Taulukko kopioidaan uuteen työkirjaan:
Sheets("Taulukko").Copy
PHP-ohjelmien kuvien nimissä ei saanut olla ä- ja ö-kirjaimia!!
Miten Brother-tarratulostimessa saa Autocut-toiminnon pois päältä VBA-ohjelmasta käsin:
ObjDoc.DoPrint &H10, "0"
Brother-kirjoittimen ohjelmointivinkkejä:
http://www.brother.com/Bpac/uk/Bpak_faq_programming.html
Miten UserFormin ListBoxin valinnan (sininen valintanauha) saa pois päältä:
ListBox1.LIstIndex = -1
Erittäin hyvä karttasovellus netissä:
http://maps.google.fi/maps
1. Kartta
2. Satelliitti
3. Hybridi
Voit avata Visual Basic editorin Excelistä:
Alt-F11
Range-objekti Ei toiminut Speadsheet-objektilla,
vaan piti käyttää Cells-objektia!!
Sähköpostin lähettäminen PHP:n funktiolla mail() EI onnistunut VertrigoServ-palvelimelta,
mutta onnistui hyvin Neutechin palvelimelta
Val-funktio muuttaa merkkijonossa olevat numerot luvuksi:
Val("12maaliskuu") -> 12
Miten tutkitaan, onko solussa ylipäätään jotakin:
If Application.ActiveCell Then
Application-objekti on itse sovellus eli Excel.
If-lauseen voi kirjoittaa myös yhdelle riville:
If X = 1 Then Y = 2
Tulostusikkunan näyttäminen VBA:lla:
Application.Dialogs(xlDialogPrint).Show
Loopin toteutus GoTo:lla:
uusi: (tämä on rivitunnus)
…
GoTo uusi
Tiedon vastaanottaminen näppäimistöltä API-funktion GetKeyState-avulla:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Sub TestaaEnter()
X = 0
Do Until X = 1
If GetKeyState(&HD) < 0 Then X = 1
Do Events
Loop
MsgBox "Painoit Enteriä!"
End Sub
Pariton luku saadaan koodissa selville seuraavasti:
If laskuri Mod 2 = 1 Then
Tutkitaan, onko solussa kaava:
If Range(osoite).HasFormula
Public Function VIITTSUMMA(alue As Object, r As Object, p As String)
Application.Valatile
yht = 0
For Each cell In alue
If p = "lih" And cell.Font.Bold = r.Font.Bold Then
yht = yht + cell.Value
End If
Next cell
VIITTSUMMA = yht
End Function
Kirjoita sitten taulukon soluun:
= viittsumma(A1:A7; C1; "lih")
Ehto on tässä solussa C1
Toiminnon käynnistäminen toisella tavalla objektia klikkaamalla:
kuvioni.OnAction = "ohjelmanNimi"
Tällöin "ohjelmanNimi" voi sijaita eri ohjelmamodulissa aliohjelmana!
Löydät Add-in-apuohjelmat:
Työkalut/Apuohjelmat
Tools/Add-Ins
- asennukset kruksaamalla nimi
Salasanan antaminen VBA-projektille:
VBAProject-Project Properties:
Protection
Lock project
Add-in tiedoston tallennusmuoto:
Microsoft Office Excel - lisämakro - Add-in
Väliviiva valikkoon:
Begin Group = True
Et voi poistaa Excelin alkuperäisiä valikoita, mutta voit piilottaa ne.
Palautus alkuperäiseksi:
.Controls("Tools").Reset
VBA-aliohjelman keskeytys siten, että UserForm ei sulkeudu:
Exit Sub
EIKÄ End
UserFormilta pääsee suoraan www-sivuille:
ActiveSheet.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Uudelleenohjaus halutulle www/php-sivulle JavaScriptillä:
window.location.href = "tiedosto.php"
PHP-osoitteiden mukana lähetettyjä muuttujia voit käyttää avautuvassa PHP-tiedostossa
suoraan ilman mitään erillisiä funktiomäärittelyjä!
Voit lähettää PHP-sivulta tietoja useilta eri formeilta eri submit-toiminnoilla:
Form1: submit
Form2: submit
Voit siis lähettää eri asioita samalta sivulta tällä systeemillä vaikka kuinka monelta formilta!!
Aikahaarukka toteutetaan mySQL-kyselyissä:
WHERE pvm > DATE_SUB(NOW()), INTERVAL 14 DAY)
AND pvm < DATE_ADD(NOW()), INTERVAL 14 DAY)
Paluu edelliselle www-sivulle JavaScriptillä:
history.back()
PHP:llä:
header("Location: tiedosto.php");
Voit tuoda tiedot mySQL-taulusta PHP:llä suoraan HTML-sivulle R-elementteihin.
Elementtejä voi olla useammanlaisia:
Esim. yritys = Y, tiedot = T
Tietojen lähettäminen HTML-formilta automaattisesti JavaScript-koodilla eli
auto-action -toiminnon toteuttaminen:
document.forms[0].submit
Eli tässä piti määritellä, minkä formin tiedot lähetetään!
Metodi click() myös simuloi painikkeen napsauttamista hiirellä!
Lisätty bannerit-tietokannan tauluun "yritykset" kenttä "jnro" eli järjestysnumero,
joka mahdollistaa banneriesityksissä suosituimmuusjärjestyksen käytön!
Sähköpostien sijainti kovalevyllä:
C:\Documents and Settings\oem\Local Settings\Application Data\Microsoft\Outlook\archive.pst
Tuonti tapahtuu PHP:n fgetcsv()-funktiolla.
Jotta päiväys meni oikein mySQL-tietokantaan, piti laittaa:
echo date("Y-m-d")
NULL-arvoa haetaan SQL:ssä:
WHERE sarake IS NULL
Voit PHP:n substr-funktiolla rajoittaa taulukon sarakkeeseen tulevan tekstin pituutta
eli sarakeleveyttä.
Käytettävän taulukkoalueen voit Excelissä rajata myös seuraavasti:
Worksheet.ScrollArea = "a5:b10"
Excel 2003:n makrojen suojaustasot:
High = ainoastaan digitaalisesti allekirjoitetut koodit suoritetaan
Medium = käyttäjältä varmistetaan
Low = koodi suoritetaan ilman varmennusta
Uusi kaksitoiminen makroratkaisu:
Worksheets("Sheet1").Visible = Not Worksheets("Sheet1!).Visible
Voit käsitellä lukittuja soluja VBA-koodilla, kun
Worksheets("Data").Protect Password:="jukka", UserInterfaceOnly:=True
OptionButtoneiden (radionappien) ryhmittely:
Me.Opt01.GroupName = "op1"
Me.Opt02.GroupName = "op1"
Me.Opt03.GroupName = "op1"
Kontrollien sarkainjärjestyksessä:
TabStop = kuuluuko kontrolli ylipäätään kiertoon
TabStop = False (ei kuulu kiertoon)
TabIndex = sarkainjärjestys
Rivinvaihtojen poisto Excelin solussa olevasta tekstistä:
ActiveCell.Replace Chr(10), "", xlPart
ActiveCell.Replace Chr(13), "", xlPart
Saat kuvan aina www-sivun levyiseksi:
style = "width:100%"
Excelin UserFprmin otsikkopalkin saat piilotettua seuraavasti:
Properties:
StartUpPosition = 0 - Manual
Top = -20
Voit tällä systeemillä esittää kuvia koko ruudun kokoisena!
Keksitty hyvä tietokoneohjattu kuvaohjelman häive-esitys:
C:\HTML2006\ArcticRoad.html
Häiveenä on stylen filter:
BlendTrans (Duration=2.0)
Mp3-musiikki soitetaan < embed > elementistä
Ohjelmoitu VB-scriptillä. Toimii vain IE:ssä
Voit skannata Epson-kirjoittimella useita sivuja(max 100) samaan PDF-tiedostoon!!
Skannaus PDF-tiedostoon on "Skannaa"-napin oikealla puolella oleva nappi.
Voit skannata suoraan ilman esikatselua.
xpath XML-tiedoston attribuuteista onnistui:
muistikirjaA.php
xpath XML-tiedoston elementeistä onnistui:
muistikirjaE.php
PHP:n list()-funktiolla saat erotettua tekstitiedoston rivillä olevat tiedot heti suoraan eri kenttiin:
list($nimi, $osoite, $puhelin) = explode(";", $line)
"tarkistus-arrayn" avulla.
Arraylla tarkistetaan jokainen päivä erikseen ennen päivän tietojen tulostamista sivulle.
Hyvä systeemi kuvien nimeämiseksi kuvaesitystä varten:
001Eka kuva.jpg
002Kahvilla rantakahvilassa.jpg
003Mirrin eka hiirisaalis.jpg
Voit nimetä kuvat tällä tavalla väliaikaisesti ja alkuperäinen nimi säilyy!!
Kuvat esitetään yleisissä kuvaohjelmissa aakkosjärjestyksessä!
Art Tatum: Body and soul
Django Reinhardt: Minor swing
Django Reinhardt: Montmartre
Hyvä class-menetelmä ja lajittelu:
class_kirjat.php
Jukan ja Sinikan kuvia vuodelta 2007 siirretty nettiin ja toimii sieltä IE:ssä:
www.dataniemi.com/Kuvaohjelma2007.html
Hankittu netistä monipuolinen ja hyvä moniraitanauhoitusohjelma:
Multitrack Studio Professional Edition Version 4.3.1.0
www.multitarckstudio.com
Asennustiedosto: setupmtspro.exe 2,16 Mt
Multitrack Studio -ohjelmassa:
1. Studio
2. Devices - Settings
3. Win Sound Settings
MIDI In Device: USB-äänilaite
MIDI Out Device: Microsoft GS Wavetable SW Synth, jos sisäiset MIDI-äänet
MIDI Out Device: USB, jos ulkoiset MIDI-äänet
Lisätty Excelin VALIKKO.xls -työkirjaan yleismakro:
Ctrl-h eli lisääHeaderit
joka lisää sivulle tietyt ylä- ja alatunnisteet
Sain toimimaan ekakerran kätevän "multiselect"-valintalistan:
Tarrat lomaviikot ja yhteisöt.xls
Multiselect-valintalistan toteutus netissä:
HTML-koodissa:
SELECT MULTIPLE
JS-koodissa:
var valitut = new Array()
var lkm_valitut = 0
var tietueet = document.forms[0].multilista.options
for (x=0;x<tietueet.length;x++){
if( tietueet[x]selected == true){
valitut[lkm_valitut++] = tietueet[x]
}
}
MULTIPLE-valinta tehdään netissä Ctrl-näppäimellä!