VBA
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



VBA
Kun ohjelman ajo pysähtyy virheilmoitukseen myös julkiset muuttujat katoavat muistista!


VBA
Kolmiulotteinen VB/VBA-matriisi:

matriisi(100,10,15)

Tietojen haku työkirjasta matriisimuuttujaan kesti 6 sek.

Tietojen haku matriisimuuttujasta työkirjaan kesi 30 sek.


Excel, VBA
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


Excel, VBA
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


Excel, VBA
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


Excel, VBA
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


Excel, VBA
ActiveSheet.Shapes("ComboBox1").Top = ActiveCell.Top + ActiveCell.Height
ActiveSheet.Shapes("ComboBox1").Left = ActiveCell.Left
ActiveCell.Select


HTML, JS
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


VBA, JS
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


HTML, JS
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


Excel, VBA, JS, UserForm
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


Excel, VBA, SQL
Seuraavat SQL-kyselyt toimivat:

SELECT * FROM viennit WHERE MONTH(pvm) = 6

SELECT * FROM viennit WHERE MONTH(pvm) BETWEEN 3 AND 4


Excel, ODBC
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


VB, VBA
Voit saada selville mitä objektia painettiin hiirellä seuraavasti:

Sub Label1_Click()
i on Public-muuttuja
i = 1
Module1.ajaOhjelma
End Sub


VB, VBA
PictureBox tyhjennetään "piirroksista" eli sisällöstä:

PictureBox1.Cls


VB
Jotta SQL-kysely Visual Basicin Data-kontrollilla onnistuisi, pitää Data-kontrollin RecordsetType olla 1 - Dynaset!!


VB
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 = ""


VB, VBA
Voit esivalita ListBoxista ja ComboBoxista tietyn vaihtoehdon seuraavasti:

ListBox1.Value = ListBox1.List(0)


SQL
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)


VB, VBA
arvo = CDbl(teksti)


Excel, SQL, ODBC
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!


Excel, VBA, UserForm
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.


VB, VBA
Saat nykyisen kuukauden esivalituksi valintalistoilla:

kk = Month(Date)
ComboBox1.Value = kk


Excel, UserForm
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


Access, SQL
SQL-kysely Access-tietokannasta toimi myös tällä lauseelle:

SELECT * FROM Customers IN "F:\dbfiles\custdb.mdb"


Excel, Access, ODBC, SQL
Access 1.0 -tietokannan avaus Exceliin toimi seuraavalla lauseella:

Set myDB = OpenDatabase("D:\Access\Nwind.mdb")


Excel, tietokannat, ODBC
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


VB
Voit puhuttaa tekstitiedoston MikroPuhe-ohjelmalla VB-ohjelmasta:

RetVal = Shell("D:\puhe\mp4.win.exe D:\tekstit\jukka.txt", 1)


HTML, STYLE, JS
Saat HTML-lomakkeen taustavärin heksa-punaiseksi:

document.lomake.style.BackgroundColor = "#ff0000"


JS, HTML
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;...">


JS
Saat lukujen yhteenlaskun onnistumaan JavaScriptissä seuraavasti:

summa = luku1 + luku2 - 0


VB, VBA
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")


JS
Varmin keino laittaa pysyvät muuttujat talteen JavaScriptissä on laittaa ne www-sivulle johonkin nimettyyn paikkaan esim. DIV-elementtiin.


Excel, VBA
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"


HTML, TABLE
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


HTML, JS
Elementit piiloon:

style="display:'none'" tai
style="visibility:hidden"

Elementit näkyviin:

style="display:''" tai
style="visibility:visible"


VBA
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, JS
HTML-sivun vierittäminen ikkunassa:

self.scrollTo(0,0)

HTML-sivun vierittäminen kehyksessä:
parent.frame2.scrollTo(x,y)


HTML, TABLE, Excel
Koko HTML-taulukon tai osan siitä pystyy tuomaan Exceliin kopioimalla leikepöydän kautta.


HTML, JS, VBS
HomeSiten kaikkien esimerkkien HTML- ja Script-koodit löytyvät:

D:\HomeSite4\Help\HTMLReference\ScriptingReference\


HTML, www, web, JS
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ä!!


HTML, TABLE, Excel, VBA
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


FTP
Kun tiedostoja siirretään FTP-ohjelmalla palvelimelle, pitää internet-yhteys olla auki esim. Internet Explorerilla!


IE, ADO
ADODB, ADOR, ADOX tulivat IE 5.0:n mukana

ADO toimi ensi kertaa Excelissä ja www-sivuilla.

ADO Data Control ei vielä toimi!


ADO
ADO:n helpit ja referenssit löytyvät:

H:\INETSDK\Installed\Help\ado


SQL
SQL-lause:

SELECT * FROM taulu1 UNION SELECT * FROM taulu2


Excel, HTML. TABLE, www
Tietojen haku www-sivulta taulukosta. Taulukko saa olla minkä kokoinen tahansa.

G:\html\Tietojen haku HTML-taulukosta.xls


www, button, painike Jos www-sivulla on paljon painikkeita, painikkeiden mittojen muutos kestää kauan, mutta värien muutos ei!


ääni
Easy CD-DA Extractor on ohjelma MP3-äänitiedostojen tekoon ääni-CD:ltä.

hinta 200 mk


HTML, TABLE, JS
HTML-infotaulukossa voi olla:
- vain yksi solu ja siinä paljon tekstiä
- tyhjiä JS-tiedostoja
- useita JS-tiedostoja peräkkäin


HTML, JS, DIV
Voit ladata tekstejä ja kuvia myös piilossa olevaan DIV-elementtiin, joka otetaan sitten näkyviin kuin ponnahdusikkuna!


ääni, MP3
MP3-musiikkia pystyy esittämään www-sivulla Windows Media Playerillä, joka tulee Internet Explorer 5.0:n mukana!


SQL, DAO
Taulun liittäminen tauluun onnistui DAO:lla, mutta ei ADO:lla seuraavasti:

mySQL = "INSERT INTO tilausrek2 SELECT * FROM tilausrek"
myUpdate = myDB.Execute(mySQL)


SQL
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, TABLE, FORM
HTML-formin voi tehdä myös HTML-taulukon sisälle!


SQL
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


JS, oliot
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")


JS, oliot
Olion kaikki arvot voidaan tuhota kerralla:

olio = null


VBA, VBS
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ä!


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


HTML, www
Voit estää dokumentin latautumisen käyttäjän tietokoneen cachesta eli välimuistista seuraavasti:

Dokumentin HEAD-osaan:

<META HTTP-EQUIV="Expires" CONTENT="0">


VBS
Paramtrien välittäminen VBScript-aliohjelmille ei onnistunut ei sitten millään. Seuraava EI toiminut!

<A HREF="vbscript:koe(1)">


VB
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)


JS, HTML
Voit toteuttaa automaattisesti tietyn ajan kuluttua itsestään sulkeutuvan infoikkunan:

myTimer = window.setTimeout("self.close()", 3000)

Ikkuna sulkeutuu 3 sek. kuluttua!


Excel, VBA, oliot
Uusi objekti voidaan lisätä kokoelmaan argumentteineen VBA:lla:

ActiveSheet.Scenarios.Add
name:="Likely"
changingCells:=Range("A1:C5")
comment:="Menee melko mukavasti"


JS
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!")


JS, oliot
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.


JS, HTML
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


JS, HTML, FORM
Voit asettaa kohdistimen valmiiksi tekstiboxiin tai mihin tahansa elementtiin JavaScriptillä:

forminNimi.boxinNimi.focus()

Muista sulut! JavaScriptin metodeissa (funktio!) on aina sulut!


HTML, FORM
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!


JS, VBS
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


JS
Funktio, joka pyöristää luvut kahteen desimaaliin:

function round(luku){
return Math.round(luku * 100) / 100
}


Zip Iomegan Zip-aseman asennustiedostot 7,22 Mt löytyvät:
C:\Tool_95


JS, ääni
Kappaleen keston sekuntteina saat selville ActiveMovie-kontrollista JS-koodilla:

kesto = AMovie.duration


ääni, JS, www, HTML
Ää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!


Excel, VBA, ääni
Sovellus musiikkikohtien merkkaamiseen kommenteilla Excel-taulukkoon:

D:\esitys\Ajan merkkaaja.xls


SQL
SQL-kyselyjen päivämääräehdoissa on käytettävä DateValue-funktiota:

Pvm >= DateValue('vkAlku')


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


Excel, XML
Excelistäkin löytyi XML eli Microsoft XML, version 2.0


JS, mj
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ä!


JS, HTML
Voit tyhjentää aikaisemman HTML-sivun sisällöstä:

Esim:
parent.kauppa.document.open()
parent.kauppa.document.write('<BODY COLOR="WHITE">')
parent.kauppa.document.close()


Excel, VBA
Jotta desimaaliluvut tulisivat Excelin UserFormilta lukuina Excelin taulukkoon, pitää VBA:ssa muuttujat alustaa Doubleksi ja tyhjät tekstiboxien arvot käsitellä!


Excel, VBA
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


HTML, JS
1. Sijoita kaikki HTML- ja JS-tiedostot suoraan juureen
2. Sijoita kuvatiedostot juuren alle alihakemistoon "kuvat", jolloin toimiva polku merkitään koodissa kuvat/


HTML, JS
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!


HTML, JS
ClothingBox-verkkokauppaohjelma valmis. Ohjelman esittely Kauppiksella loppuseminaarissa!


idea
Ongelman ratkaisukeinoja:

1. Yksinkertaistaminen
2. Ongelman erityispiirteiden tunnistaminen
3. Äärimmäisyyksien tarkastelu

Inspiraatio tarkoittaa mahdollisuuksien oivaltamista.
Herkisty huomaamaan yksityiskohdat!


HTML, JS
Tietojen siirto toiselta www-sivulta toiselle:

location.href
location.search

Esim:
G:\eKauppa\ekaSivu.html
G:\eKauppa\301.html


JS, oliot
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]


HTML, JS
Voit sijoittaa kuva-olion HTML-koodiin:

<IMG src=&{kuva1.src}


JS, oliot
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ä"


JS, oliot
Olion ominaisuuslista ei saa päättyä pilkkuun!


HTML
Euron symboli HTML-kielessä on MIKÄ?


JS, array
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!


VB, VBA, VBS
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...


JS
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


HTML, JS, CSS
CSS-tyylisivuilla pystyt antamaan HTML-sivuille haluamasi yksilölliset marginaalit


JS, array
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;
}


JS, array
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


JS, oliot
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] = {}


elämä
Usko on elävää silloin, kun se kumpuaa omasta avuttomuudesta.

Syvyydestä minä huudan sinua Herra!


elämä
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ä
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.


JS, funktiot
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!


JS, array
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] = {}


HTML, JS
zIndexin oikea syntaksi

HTML-elementin sisällä:
style="z-Index:1"

JS-koodissa:
obj.style.zIndex = 1


HTML, JS
Voit antaa usealle objektille saman ID-arvon, jolloin niistä muodostuu automaattisesti array, jonka alkioihin voit viitata indeksillä!!


HTML, TABLE, JS
Saat koordinaatit kuvan yksityiskohdista talteen päällä olevaan läpinäkyvään HTML-taulukkoon:
G:\html\hiiren xy talteen.html


HTML, JS, oliot
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!


JS, array
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"


HTML, objektit, asemointi, kerros
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


JS, Array, olio, pituus, length
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] = {}


www, netti
Kirjastokimppa:
kirikimppa.haapajärvi.fi

Alueellisen tiedon virtuaaliverkko:
www.kirjastovirma.net


BODY.background - määrittelee taustakuvan
- 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


JS, Array, oliot
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"


JS, Array
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


JS, funktiot, function, mj
parseInt muuntaa merkkijonon numeroiksi

Esim:
parseInt("12abc") = 12


JS, funktiot, function, eval, mj
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.


JS, string, mj
Merkkijonoja voidaan käsitellä kahdella tavalla:

1. StringObj.method

2. "String Literal".method


business, markkinointi, myynti, osto 1. Kokeakseen miellyttäviä tuntemuksia
2. Saadakseen ratkaisun ongelmaansa


business, markkinointi, myynti, osto 1. Ei tarvetta
2. Ei rahaa
3. Ei kiirettä
4. Ei halua
5.Ei luottamusta


Excel, email, sähköposti, data
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.


Excel, email, sähköposti, liitetiedostot
Liitetiedosto voidaan lisätä sähköpostiviestiin seuraavasti:

myItem.Attachments.Add "polku"

jossa polku = hakupolku + tiedostonimi


Excel, email, VBA, VBS, JS
Sähköpostiviestit voidaan lukea Outlookista myös nimen avulla:

Set myItem = omaKansio.Items("Viestin aihe")


Excel, email, data
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!


Excel, VBA, Mid
Voit muuttaa tekstiboksissa annetun pilkun desimaalipisteeksi Exceliä varten seuraavasti:

Mid(mk. InStr(1, mk, ","), 1) = "."


VBA, mid Voit poistaa merkkejä merkkijonon alusta myös Mid-funktiolla:
pvm = Mid(pvm, 4) 'poistaa 3 merkkiä


Excel, VBA
Tabulaattori eli Tab-merkki on VB:ssä Chr$(9)


Excel, UserForm, ListBox, ComboBox
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


Excel, mikropuhe
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


JS, HTML, www, web
Asiakaskohtaisten web-sivujen ajo lennosta kehykseen. Kysytty asiakastunnus määrää haettavan JS-tiedoston ja sivun sisällön:

src = " ' + asTunnus + '.js">'


HTML, www, web, palvelin
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!


VBA, Cdate, time Kellonaikojen luku Excel-taulukosta VBA-ohjelmaan ei tahdo onnistua. tällöin voi käyttää CDate-funktiota ja luku onnistuu!


Excel, VBA, solut, solualue, kaavat
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


Excel, VBA, OFFSET, summat
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


Excel, VBA, alueet
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!


Excel, funktiot, INDIRECT
Voit antaa aluenimen kaavaan myös viittauksena INDIRECT-funktion avulla.


Excel, funktiot, SUM
Voit määrittää OFFSETilla dynaamisesti, minkä sarakkeen summa milloinkin lasketaan:

= SUM(OFFSET(alue;;cols;;1))


Excel, VBA
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!


Excel, VBA
Jokin alue ilmaistaan VBA-koodissa:

Range(A1:B2) tai [A1:B2]

Jokin sarake ilmaistaan:

Columns(A) tai [a:a]


Excel, VBA
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!


HTML, JS, attribuutit
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)
}


Excel, VBA
Voit vaihtaa lukujen etumerkin Excelissä ja VBA-koodilla, jakamalla luvut -1:llä!!


Excel, VBA
Excel-taulukon tyhjennys siten, että kaavat ja muotoilut säilyvät:

Range().SpecialCells(xlCellTypeConstants, 23).ClearContents


XML, Excel, VB
XML-tiedostojen käsittely ja katselu onnistuu myös Excelissä ja VB:ssä.

Voit katsella XML-tiedostoja kätevästi suoraan MsgBox-huomautustaulusta!


XML, web, www, data
Sovellusten välinen tiedonvälitys webin kautta onnistuu kätevästi yksilöllisillä XML-elementeillä esim. seuraavasti:

<TILAUSNUMERO>
<ASIAKASNUMERO>


XML, DSO
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.


XML, JS
Saat poimittua erilleen ne solmut, joissa on tietty attribuutin arvo seuraavalla JS-koodilla:

var selectedElems = root.selectNodes("CD[TITLE/@id='jukka']")


JS, Array, oliot
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 ""


XML
Skandit onnistuvat XML-tiedostossa kun:

1. Kirjoitat skandit Notepadilla eli Muistiolla

2. Kirjoitat XML-tiedoston ensimmäiselle riville: encoding="ISO8859-1"


JS, Array, oliot, ominaisuudet
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ä.


JS, oliot
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"


JS, HTML, TABLE
HTML-taulukon rivi piilotetaan JS-koodilla:

taulu.rows(1).style.display = 'none'

Rivi näytetään jälleen:

taulu.rows(1).style.display = ''


XML, XMLDOM, VB
XML toimi hyvin myös VB4.0:ssa. Voit Microsoft.XMLDOM:in avulla tuoda XML-materiaalia VB-ohjelmiin!


CSS, JS, STYLE
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!


XML, mj
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.


JS, HTML, CSS
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ä


XML, CSS, JS
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


XML, Data Island, datasaareke
Kun tuot XML-tietoja merkkijonona loadXML-metodilla www-sivulle, pitää XML-määrittely eli rivi 1 jättää merkkijonosta pois!


Windows
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)


ajastus, kontrolli ActiveMovie-kontrollissa ajoituksen pystyy antamaan millisekunnin tarkkuudella:
00:00:30.500


JS, multimedia, eval
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!


JS, Array, eval
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.


JS
eval-funktio suorittaa merkkijonona olevan JavaScript-koodin eli minkä tahansa JS-lauseen.

Lauseet voidaan antaa ohjelman ulkopuolelta!!!


JS, eval, email
JS-komentoja voidaan välittää merkkijonoina emaililla ja merkkijonot toteuttaa JS:n eval-funktiolla.

Esim:
mj = 'kuva.src = "/bmp/Img0015.bmp"'

eval(mj)


JS, www, web
Digitaalikelloon perustuva ajastin, joka toteuttaa JavaScript-lauseita:

G:\html2002\ajastin.html


XML, JS, HTML, CSS
Pidä aina erillään dokumentin

- datasisältö eli XML-data tai JS-Array-data
- rakenne eli HTML
-ulkoasu eli CSS


HTML, web, www
Lomakkeiden suunnittelu on kätevää HTML:ssä. Voit antaa lomakkeen elementeille oikeat mitat esim. cm tai mm. Pienin mitta oli kuitenkin h = 5 mm!


JS, HTML
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!!


HTML, TABLE, CSV
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"


HTML, JS, sovellukset
Hieno näyttötaulusysteemi hissitoiminnolla:

G:\html2002\vapaussoturitJS.html


HTML, JS, CSS
Tietojen näyttö kuvaruudulla mahdollisimman isoilla fonteilla. Tietojen selaus ja haku tietokannasta.


VBS, JS
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
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


SQL
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, www, tietokannat, data
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!


Excel, VBA, FX
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


Excel, VBA, multimedia
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


Excel, VBA, menu
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


HTML, TABLE
Turhat tiedot poistetaan seuraavasti:

taulu1.rows(i).cells(0).innerHTML = ""

taulu1.rows(i).cells(1).innerHTML = ""


XML
XML-elementeissä eli tageissa EI saa olla skandeja!

XML-elementit piti olla isoilla kirjaimilla!


JS, HTML, TABLE
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


HTML, TABLE, TDC
TDC-taulukkoon EI voinut lisätä hyperlinkkejä ajamalla kuten ei-sidottuun taulukkoon on mahdollista!


JS, muuttujat
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!!


JS, oliot
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++
}


HTML, CSS
Luokkanimeksi käy myös pelkkä numero:

<STYLE>
.4 {}
</STYLE>


JS, oliot
data = tuote[i][ominaisuus[j]]


JS, Array
ar = ar1.concat(ar2)


JS
Script-elementitkin voi nimetä id-attribuutilla, jolloin sille voi antaa myös src-ominaisuuden arvon koodissa:

<SCRIPT id="s1"></SCRIPT>

<SCRIPT>
s1.src = "*.js"


JS, Array, oliot
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!


JS, TABLE
Voit kytkeä minkä tahansa tekstitietokannan lennosta TDC-kontrolliin seuraavasti:

TDC.DataURL = "*.csv"

jossa * on mikä tahansa tiedostonimi hakupolkuineen


markkinointi, myynti
Keinot varmistaa lukuisia kauppoja:

1. Riittävä määrä kontakteja
2. Riitttävä määrä myyntikeskusteluja
3. Riittävä määrä kaupanpäätösehdotuksia


markkinointi, myynti
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


HTML, TABLE
TH-elementtejä voi HTML-taulukossa olla useammassa rivissä eli:

rivi1: Taulukon otsikko
rivi2: Sarakkeiden otsikot
rivi3: Sarakkeiden yksiköt


Excel, VBA, JS email
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!!


Excel, VBA, email
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!


Excel, VBA
Uusi tyhjä työkirja avataan Excelissä koodilla:

Workbooks.Add


Excel, VBA
Voit lukea ja kirjoittaa arvot ja kaavat Excel-taulukon soluista:

Cells(r, c).Formula

jossa r = rivin nro ja c = sarakkeen nro


JS, www, web, email
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ä!!


HTML, JS
Saat selville käyttäjän kuvaruudun koon eli mitat seuraavasti:

x = screen.width
y = screen.height


Excel, CSV
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!


Excel
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


HTMK, JS
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"


XML, JS
MSXML:n nodeFromID()-metodi löytää nopeasti solmun dokumenttipuusta ID-arvon perusteella!!


XML, XSL
Inside XML -kirja, s.660

<xsl:template match = "id('Christine')">
<H3><xsl:value-of select = "." /></H3>
<xsl:template>


XML, XSL
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>


XML, XSL, JS
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]")


XML, JS
Saat koko merkatun elementin eli tietueen sisällön XML-muodossa:

selectedElems.xml

Saat koko XML-tiedoston merkkijonona:

xmlDoc.xml


XML, JS
XML-elementtiin annetaan uusi tekstisisältö tai entinen teksisisältö vaihdetaan:

selectedElems = root.selectNodes("CD").item(0).childNodes.item(0)

selectedElems.text = "Merkkijono"


XML, JS
Uusi lapsisolmu lisätään XML-dokumenttiin viimeiseksi solmuksi:

appendChild


XML, JS
XML-documentissa valittuun elementtiin lisätään aikaleimaus-attribuutti:

selectedElems.setAttribute("id", Date())


JS, CSV
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("")


JS, Array
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


Excel, VBA
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!


JS, CSV, mj
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


JS, oliot
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]]


Excel, ODBC
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!


JS
Miten kohdistin siirretään pois valintalistalta tai tekstiboxista itse dokumenttiin, jotta dokumenttia päästäisiin vierittämään näppäimillä:

document.body.focus()


XML, XSL, JS
Tekstisisältö voidaan hakea XMl-elementistä attribuuttinimellä:

otsikko = root.selectNodes("*[@otsikko]").item(0).text


HTML, JS
Dokumentin dynaaminen kirjoittaminen DIV-elementteihin oli parempi ja joustavampi ratkaisu kuin kirjoittaminen TABLE-rakenteeseen. Muotoilut ja mitoitukset toimivat DIV-elementeissä yksilöllisemmin ja paremmin!


XML, JS
Lapsielementtien lukumäärä saadaan XML-dokumentissa seuraavasti:

root.childNodes(0).childNodes.length


XML, JS
Nimetyn attribuutin arvo saadaan XML-dokumentissa seuraavasti:

root.childNodes(i).getAttribute("id")


XML
XML-koodissa erikoismerkit pitää koodata:

< on &lt
> on &gt


kuva, sprite Kuvan paloittelu osiin onnistuu Microsoftin Sprite-kontrollilla, joka sisältyy Microsoft Internet Exploreriin. Sprite-kontrollin täydellinen nimi on The Direct Animation Sprite.
Uuden kuvan päivittämien kontrollissa onnistui vain, kun ajettiin koodit:

kuva1.play()
kuva1.stop()
kuva2.play()
kuva2.stop()
jne...


Excel, VBA
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!!


VBS, JS, ADO
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)!


Excel, VBA, JS
Hyvä esimerkki JavaScriptin käyttömahdollisuuksista Excelissä ja Excel-sovelluksissa:

G:\html2002\Tietojen haku HTML-taulukosta.xls


VB, VBS
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


JS, Excel
Vanha Excel-työkirja avataan www-sovelluksesta käsin:

xlApp.Workbooks.Open("file://C:/jukka.xls")


JS
Voit lisätä JS-koodin merkkijonoihin ylimääräisiä lainausmerkkejä helposti seuraavasti:

\" tai \'

Rivinvaihto on \r ja\n

Tabulaattori on \t


VBS, JS, ADO
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"


HTML, JS
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!


HTML, JS
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.


Excel, VBA, mj
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


HTML
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>


JS, CSS, STYLE
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ä!


HTML, JS
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


JS,VBS, ADO, DAO
Hyvä keino tarkistaa SQL-kyselyn tuloksena saadun reocrdsetin eli tietuejoukon sisältö:

alert(RS.GetString())
RS.MoveFirst()


Excel, VBA, UserFOrm
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!


HTML, TABLE, JS
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!


JS, HTML
innerText näyttää JavaScriptin rivinvaihdot \n ja \r
innerHTML ei niitä näytä
innerHTML:n merkkijonossa rivinvaihdon merkkinä pitää olla <BR>


VB, VBA, VBS
Näkyvä rivinvaihto = Chr(13)
Näkymätön rivinvaihto = Chr(10)


VB, VBA
Saat merkkijonosta merkin ANSI-koodin eli merkin numeron seuraavasti:

nro = Asc(Left(mj,1) tai
nro = Asc(mj)


JS, CSV, DIV
Tapahtumakalenterin toteuttaminen filterAsiarek-systeemillä:
1. Tapahtumien poiminta hakuehdoilla
2. Tapahtumien valinta
3. Tapahtumien tulostus


JS, VBS, IE, HTML
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!


vbs, html,element
Tapahtumafunktioissa pitää olla VBScriptissäkin sulut:

<BODY onclick="ajaFunktio()">


js, vbs, html
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


js, html
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


html, js, attribuutti
Voit näyttää koko tietueen sisällön eli useita rivejä minkä tahansa elementin TITLE-attribuutissa:

Rivinvaihto TITLEssä: "\n"
Tabulointi TITLEssä: "\t"


js, html
Voit ajaa id-attribuutit myös TDC:hen sidottuun HTML-taulukkoon:

taulu.rows(i).cells(0).id = "mj"


js, html
Voit merkata hiiren kohdistimen kohdalla olevan elementin koodilla:

x = window.event.srcElement.sourceIndex

document.all.item(x).style.backgroundColor = "yellow"


vbs, html
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.


js, vbs
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.


vb, vba, vbs
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")


xml, js
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


xml, js
xmlDoc.DocumentElement
- antaa koko documentin sisällön eli riviltä 2 alkaen ja jättää pois rivin 1 eli xml-määrittelyn


xml, js
Kaksi tapaa valita kohde-elementtejä XML-dokumentista:

1. childNodes.item(i)

2. selectNodes("NIMI").item(i)


xml, attrib, js
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


xml, js, mj
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


xml, js
Voit kopioida koko tietuesolmun sisällön (esim. CD) merkkijonoon ja sieltä uuteen XML-tiedostoon helposti:

cd1 = root.selectNodes("CD").item(0).xml


xml, xsl, js
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ä)!


js, mj
Merkkijonoja voidaan yhdistää +-operaattorilla vähimmällä koodilla seuraavasti:

mj+="Merkkijono1"
mj+="Merkkijono2"


js, replace
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!


js
Käytä hyväksi JavaScriptin säännönmukaisia lausekkeita, myös monipuolisesti eri funktioiden kanssa!


xml, xsl, js
XSL-kielessä on mahdollista lajitella myös attribuuttiarvojen mukaan:

order-by="+@nro"
order-by="-@nro"


xml, xsl, js
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>


xlm, xsl, js
Otetaan kuudes elementti:
<xsl:for each select="DOKUMENTTI/*[5]">


wav, midi, ääni, multimedia
Tiedoston lataus:
musiikkiSoitin.FileName = "tiedosto"

Tiedoston soitto:
musiikkiSoitin.play()


xml, xsl, js
xsl:sort eli lajittelu ei toimi vielä IE5:ssä, vaan vasta IE6:ssa.


xml, xsl, js
<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


xml, xsl, js
Haetaan elementit, joissa ei ole id-attribuuttia:
match="element[not(@id)]"


xml, xsl, mj
Suurin osa XPathin merkkijonofunktioista ei toimi IE5:ssä, jossa on msxml2


xml, xsl, js
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"


js, mj
Saat halutun palan merkkijonosta JavaScriptillä:
mj = mj.substring(alku,loppu)

Esim. saat merkkijonon ensimmäisen merkin:
mj = mj.substring(0,1)


musiikki
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.


musiikki
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


musiikki, midi
SysEx tiedot pitää tallentaa erikseen SYX-tiedostoina MIDI Orchestratorin SysEx-ikkunasta.


musiikki, midi
SysEx-tiedostot piti ladata ensin "SysEx"-listalle ennen lähettämistä.
Lähettäminen MIdiOutin kautta.
Lähettäminen kesti noin 15 sek.


musiikki, midi
Yamaha PSR-6300:ssa rummut on Ch = 15


xml, xsl, js
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, js
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


js, oliot
Objektimuuttujat pitää JavaScriptissä alustaa aina avainsanalla var:

var muuttujanimi = objektinimi.ominaisuus


xml, xsl, js
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)


musiikki, midi
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


excel, vba, js, html
Excelin VBA-makrojen ajo HTML-tiedostosta käsin onnistuu seuraavasti:

xlApp.Application.Run("tiedosto.xls!makronNimi")


xml, js
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


js, email
Voit identifioida sähköpostiviestin myös aiheen (Subject) mukaan:

Viesti, jonka Subject = "Jukalta"

Set viesti = olApp.ActiveExplorer.CurrentFolder.Items("Jukalta")


excel, vba, js
Voit sulkea Excel-ohjelman ohjelmallisesti:
xlApp.Application.Quit()

Jos et halua Excelin "huomautusilmoituksia":
xlApp.Application.DisplayAlerts = "False"


excel, vba, js
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, vba, vbs
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.


excel, vba
Excelistä löytyi Referenssi:
Microsoft Scripting Runtime

Ja sieltä seuraavat objektit:
Dictionary
Drive
Drives
File
Files
FileSystemObject
TextStream


dao, recordset, js, vba
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


sql, dao
DELETE ei toimi minun DAO-versiossa Excelissä!


ado
Minun ADO-versiolla ei pystynyt lisäämään tietoja tietokantaan Excelissäkään, saati sitten www-sovelluksissa!


excel, vba, userform, listbox
Kenttien luku monisarakkeiselle valintalistalle:

ListBox1.AddItem myRS("id")
ListBox1.List(0,1) = myRS("ryhmä")
ListBox1.List(0,2) = myRS("nimike")


excel, vba, odbc, tietokannat
Koko recordset voidaan avata myös:

Set myRS = myDB.OpenRecordset("taulu")


excel, vba
VBA-objektien Name-ominaisuutta ei voi antaa enää ohjelman ajon aikana!


excel, vba, access, tietokannat
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


vb, vba, vbscript
MsgBoxilla voi olla myös otsikko:

MsgBox mj, "Otsikkoteksti"


excel, vba, sql
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


sql
SELECT * INTO temp FROM taulu WHERE 1 = 2

Perustaa samanrakenteisen TYHJÄN taulun.


xml, vb, vba, vbs, js, muuttujat
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.


sql, access, mdb
Taulun poisto MDB-tietokannasta toimi näin:

DROP TABLE taulu


excel
Voit tallentaa Excelin UserFormin:

ExportFile/*.frm


xml, excel, vba
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


excel, vba
Voit korvata merkkejä Excelin solussa seuraavasti:

Cells(1,1).Replace "", "", xlPart

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!


vba, vbs, js, xml, mj
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


excel, vba
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!!


js, html,xml
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!


js, html, xml, xsl
G:\html2003\sankarivainajat.html

- nopein ja paras HTML-taaulukon tulostustapa
- suodatus ja lajittelu XSL:llä
- koko taulukko ja sen sisältö on luotu merkkijonossa!!


js, xml
Solmuja poistetaan XML-tiedostosta:

root.removeChild(root.firstChild)
root.removeChild(root.childNodes(1))
root.removeChild(root.lastChild)


js, xml
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


xml,xsl,ie
XPathin funktiot EIVÄT toimi IE5:ssä!!

name()-funktio on XPathin funktio, jonka pitäisi antaa elementin nimi, mutta ei toiminut IE5:ssä!


xml, xsl
Saat XML-tiedoston ensimmäisen tietueen käsiteltäväksi XSL:llä seuraavasti :

<xsl:for-each select="*/CD[0]">

G:\html2003\ajaXMLtoTABLE.html


js, html, table, css
Voit poistaa HTML-taulukon solujen reunaviivat css:llä seuraavasti:

input {border-style:none}


www, html, input
HTML-sivulla olevien painikenappien taustavärit eivät tulostuneet paperille!!


xml, js, muuttujat
Elementtien nimien luku miltä tahansa tasolta onnistuu seuraavasti:

muuttuja = xmlDoc.getElementsByTagName("muuttuja").item(0).text


xml, vb, vba, js
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


www, js, css
Voit käyttää luokkia eli class tehokkaasti www-sovelluksissa:

- tiedon keräämiseen
- tiedon ryhmittelemiseen
- tiedon esittämiseen


vb, vba
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


xml, js
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)


js, html
Arvon anto nimetylle muuttujalle radiopainikkeella:

<input name="valikko" type="radio" onclick="lajitteluJarj='+'"


excel, vba
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


excel, vba, html, table
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"!


excel, vba, html, 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, vba, autofilter
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!!


xml, excel, vba
Minkä tahansa XML-tiedoston avaus ja käsittely Excelissä:

G:\html2003\ajaXMLbyDOM.xls


excel, xml, vba
Excel-taulukon ajo XML-muodossa temp-tiedostoksi ja poiminnnat sieltä:

G:\html2003\ajaXML.xls


yamaha, dx, midi, soundit
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!


www
Kun kohdistin on www-sivulla, voit vierittää sivua välilyönti- ja shift+välilyöntinäppäimillä


js, oliot
Voit suorittaa JavaScript-olioiden alustuksen ja sijoittamisen samalla kertaa:

autot[0] = mersu = {}

G:\html2003\olionOminaisuudet2003.html


xml, js, vbs, vba, vb
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!


xml, xsl
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, table
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>


html, js
Voit antaa OPTION-elementeissä mitä tahansa omia attribuutteja eikä pelkästään value-attribuuttia!


js, mj, lausekkeet, regexp
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


js, 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, attribuutit
HTML-elementillä on ainakin 59 eri attribuuttia, joten pelkästään omat attribuutit eivät näy attribuuttilistalla!


js, array
Voit antaa myös arraylle (esim. ryhmälle) ominaisuuksia näin:

alue[1][1] = kahvila = new Array()
alue[1][1].otsikkoteksti = "1. Kahvilat"


xml.xsl,xslt,js
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>'


js, split
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


xml, xsl, html, mj
XSL-lausekkeissa/merkkijonoissa kaikissa HTML-elementeissä pitää olla AINA myös lopputagit:



js, html
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!


html, js, attribuutit
Voit lisätä mitä tahansa omia attribuutteja HTML-elementteihin ja saat niiden arvot selville skriptin avulla (IE4+).


html, xml, js, class
Voit asettaa minkä tahansa html- ja xml-elementin luokan ja samalla tyylin elementin className-ominaisuudella!!


koti, energia, puut
Kova puusavotta elokuussa:
8 m3 pilkkeitä omalta tontilta,
mm. 2 isoa salavaa pieniksi


koti, viemärit, likakaivot
Tuomo Lötjönen tyhjensi ja puhdisti likakaivo 1:n


JavaScript, JS, luvut
Desimaalilukujen pyöristys JavaScriptillä:

num = 1.456
num = Math.round(num * 100) /100
alert(num)

Huom! num = 1.46
num = 1.00 EI onnistunut!!


JavaScript, JS, oliot
Voit tehdä JS-olioihin myös useita oliomuuttujasijoituksia:

autot[0] = a1 = mersu = {}

Tällä tavalla voit käyttää olioissa:
- numeroviittauksia
- nimiviittauksia
- arrayn alkionumeroviittauksia


html, JavaScript, JS
Voit käyttää karttasovelluksissa kuumina pisteinä myös DIV-elementtejä, jolloin voit numeroida ne kartalla.


JS, muuttujat, public
JavaScriptissä globaalit muuttujat pitää määritellä ennen kaikkia funktioita!!


kuvat, jpg, bmp
Kuvatiedostojen kokoja:
320 x 240 jpg 12 kt - 21 kt
768 x 512 jpg 40 kt - 70 kt
768 x 512 bmp 394 kt


kuvaohjelmat
kuvaOhjelmanTeko.html

Mahdollistaa kuvaohjelman ajamisen synkassa äänen kanssa:
- mistä ajankohdasta (sek) tahansa
- mistä kuvasta(t) tahansa


JS, Timer
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.


kuvat, FX
Kuvien esittäminen ja vaihtaminen FXImage-kontrollissa:

<param name="FileName" value="tiedostonimi" >


with, oliot
with (olion_nimi) -rakenteen käyttö lyhentämään koodia:

with (FXLabel1) {
Caption = "Dataniemi Oy"
BackColor = 255
}

with (document.ikkunaform) {
location =
status =
}


mp3, soitin
mp3-tiedostojen toisto = play()

wav-tiedostojen toisto = run()


FX
Väri kiertää kehää FXLabelin ympäri = #37


excel, heksa, rgb, vb, vba
D:\Työt\heksaluvut.xls

- heksadesimaalilukujen muunto desimaaliluvuiksi

- heksadesimaalilukujen muunto RGB-luvuiksi

- heksavärien muuntaminen RGB-väreiksi ja "desimaalilukuväreiksi"


elämänohjeet, filosofia
Tommy Hellsten:
Omien syvimpien tarpeiden tunnistaminen on suurinta viisautta ja kypsyyttä. Se on oman todellisen luonteen ja minuuden löytämistä!


vba, range
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


excel, rgb, heksa
Kolmen RGB-luvun muuntaminen desimaaliluvuksi Excel-taulukossa:

D1: =(256 * 256 * C1) + (256 * B1) + A1


CD, volume
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


FX, vba
Pitkien FXLabel-efektien keskeyttäminen:

CancelMode = 1 - ESC Key


soitin, volume
Volume%, Volumearvo
100 %, 0
56 %, -500
31 %, -1000
18 %, -1500
9 %, -2000
6 %, -2500
3 %, -3000
0 %, -10000


excel, vba, aluenimet
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, array
Excel-arrayt:

{1,2,3;4,5,6}

{"Vasara" 3; 22,00} vaakamatriisi

{"Vasara" \ 3\ 22,00} pystymatriisi


vba, sql, union
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!!


excel, vba, odbc, taulut, tietokanta, access, mdb
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!


animaatio, gif, www, midi
Vaihtuvat pikkukuvat www-sivulla ja vaihtoon tahdistettu MIDI-musiikki, esim. kellojen soitto.
Gif-animaatiossa yksi kuva = 20 kt.

www.taitogroup.fi


musiikki, player, soitin, play Soittokertojen lukumäärän säätö Windows Media Playerissä:
PlayCount = 0

jolloin soitto loputtomasti!!


html, image
Hyvä Image Cropping -efekti:

Crop.htm INetSDK:ssa


soitin, js
ActiveMovie-kontrollin dukumentaatio löytyy Internet Explorer Web-ohjelmointikirjasta.


html, js, kuvat, multimedia
Tehty hyvä kuvakollaasiohjelma:

G:\html2003\kuvienheitto3x3.html


midi, www, js
Jotta MIDI-tiedoston voisi vaihtaa lennossa www-sivulla, pitää tiedoston lataukseen käyttää FileName-ominaisuutta!


soitin, js
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


ie6, event, key Tapahtumaohjauksen window.event.keyCode
-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)


midi, api
Netistä löytyi erittäin hyvä systeemi yksittäisten MIDI-nuottien soittamiseen MIDI-API-funktioilla.
Tekijä: saksalainen Michael Werner

D:\midi\winmm.txt


vb, vba, timer
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.


excel, vba
Uuden arkin lisäys työkirjaan:

ActiveWorkbook.Sheets.Add (Before, After, Count, Type)

Lisäys viimeiseksi:=Worksheets(Worksheets.Count)


excel, vba
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


vb
tmrClock.Interval = (60 - (Timer Mod 60)) * 1000 + 1000


MIDI, ääni, stereo, panorointi Täysi stereovaikutelma MIDI-tiedostoissa:
Oikea kanava, Pan = 127
Vasen kanava, Pan = 0
Keskellä, Pan = ---


Cakewalk, midi
Haluttu editointi-ikkuna valitaan Cakewalkissa raidan vasemmanpuolimmaisesta nro-sarakkeesta hiiren oikeanpuoleisella näppäimellä.
Jos haluat useita raitoja, valitse ensin useita nro-sarakkeesta!


Tascam, rca
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


MIDI, Cakewalk, Orchestrator Cakewalkille ja Orchestrator Plussalle MIDI-tiedostot piti olla formaatissa 1!


atari,pc, midi
Atarin MIDI-tiedostot siirtyvät suoraan PC:lle!!


vb, vba, array, listbox
Arrayn sisällön saat siirrettyä suoraan listboxien sisällöksi:

ListBox1.List = arraynNimi


vba, vb
VBA:ssa EI voi käyttää kontrollien taulukoita eli esim:
TextBox1(1)

VB:ssä voi käyttää!!


vb
Voit esittää kuvia VB4:n kuvalistakontrollista:

Picture1.Picture = ImageList1.ListImages(i).Picture


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


js
JavaScriptissä näyttö on screen-objekti eli

leveys = screen.width
korkeus = screen.height


js, html
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')"


mp3
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


vb
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
VB:n palapeli PictureBoxeissa pitää olla seuraavat asetukset:

AutoRedraw = True
Visible = True
ScaleMode = 3-Pixel


vb, api, kuvat
Kuvien animointiin voit käyttää kätevää Windowsin API-funktiota BitBlt.

Se toimii
- PictureBoxissa
- Formilla


vb, api
E:\vb32\Kvamix.vbp

Kuvamixin voi tehdä:
- formin taustakuvasta
- samasta kuvasta
- eri kuvista
- sekoittamalla vbSrcAnd:illä
- sekoittamalla vbSrcPaint:illä


vb, api
E:\vb32\winapi\Apilod32.exe -ohjelmalla voit etsiä Win32API-funktioita ja kopioida niiden määrittelyt suoraan VB:hen!


inno, elämänohje
Linus Torvalds:
Jo pitkään on tiedetty, että ihmiset yltävät parhaaseensa, kun heitä ajaa kiihkeä halu, kun heillä on kivaa.


elämänohjeet
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


oliot, xml, excel
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


vba, xml,xsl,mj
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


www, html, js
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


elämänohjeet, ideat
Kartuta taitojasi harrastuksestasi.

Seuraa alan kirjallisuutta.

Perehdy alaan niin syvällisesti kuin mahdollista!


Win95 Win95-kuvakkeet voivat olla:
- ohjelmia
- dokumentteja
- linkkejä uusiin kansioihin


html,excel,vb
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


vba,excel
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


js,html,ie
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)


wav,mp3,realplayer
F:/Nocturne.rm = 1184 kt
G:/Nocturne.mp3 = 3394 kt
G:/Nocturne.wav = 18416 kt


wav, mp3, midi, cakewalk,ie,player
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)


js,html,select
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!!


js, html, option, options, xml
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.


html, css, class
Luokan tyyliominaisuudet annetaan head-elementin style-elementissä.

Luokan nimi annetaan piste + nimi eli .nimi


js,html,css,class
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


cakewalk
Cakewalkin nuottitulosteeseen voit antaa infotietoa kuten kappaleen nimen, tekijät ym seuraavasti:

File-Info...


netti, vieraskirja Löydät ilmaisen vieraskirjan netistä osoitteesta:
www.freebok.net/


html, xml
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"


html,form
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>


html,ie,css
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>


inno, elämä
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


html, css,js
Desimaalipilkkujen linjaus CSS:llä:

text-align:right
padding-right:100px


html,js,ie
Selainikkunan koon muuttaminen linkistä:

Kirjoita linkkiin koodi:

javascript:resizeTo(800:600)


html,xml
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


html,xml,js
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")


Cakewalk, soundit
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ä.


musiikki, pgr,roland,soundit
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!


cakewalk
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


MIDI, VBA, Excel
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



VBA, Excel, Copy
Copy-metodi VBA:ssa ei kopioi soluhuomautuksia ollenkaan!




MIDI
Controller Expression on MIDI-volume, jolla voit säätää äänen voimakkuutta.



MIDI
Rumpunuotit on tehty ostetuissa MIDI-fileissä hyvin lyhyillä nuoteilla eli 16.- tai 32.osilla.



MIDI, musiikki, VBA, Roland
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



business, timer
Algoritmi kuvaa ongelman ratkaisemisen ajassa:
1. ensin tehdään jotakin
2. sitten tehdään jotakin muuta



MIDI, musiikki
www.midiworld.com
Ilmaisia MIDI-kappaleita säveltäjittäin imuroitavaksi!


id, html, style, css
ID-nimiä voidaan käyttää samanaikaisesti:
1. HTML-elementtien toiminnan ohjaukseen
2. HTML-elementtien muotoiluun tyyleillä (style ja css)



XSL, mj
Tietojen luku eri riveiltä XSL:llä DIV-elementteihin:




Tyhjiä rivejä tuotetaan seuraavasti:


Voit sijoittaa XSL-templateen myös XML-lausekkeita.



js, html
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



js, xml
removeAttribute(name As String)



tietokanta, tietokannat, sql, vba
Tietokannan otto käsiteltäväksi SQL:llä:
USE nimi

Uuden tyhjän tietokannan luonti:
CREATE DATABASE nimi



VB, VBA, Like, mj
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



VBA, sum, sumif, Excel
Summakaavojen kirjoitus kirjanpitojen tuloslaskelmiin makrolla:

ActiveCell.FormulaR1C1 = "=SUMIF(tili, RC[-2], deb)"



html, style, css
Käsiosoitin saadaan taulukon sarakeotsikkoihin, kun solun tyyliksi laitetaan:

th{cursor:hand}



js
Erittäin hyvä JS-tuoterekisteri poiminnalla oli:
G:\eKauppa1\eTuotteet.html



xml, html, js
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 taulu.nextPage()
}

for-lause haki oikean rivin nopeasti isostakin XML-tiedostosta
Valintalistan voi tehdä XSL:llä



työ
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."



cakewalk, MIDI
Levitä Cakewalkissa pianoraita koko ruudun korkuiseksi, niin sävelkulku näkyy mahdollisimman hyvin.

Hyvä pianokappale: G:\chet1003.mid



js, html, div
Eri sivujen näyttäminen DIV-elementeistä valinnan mukaan:

function naytaSivu(){
v = valinta.value
//Piilotetaan ensin kaikki sivut
for(i=1;i sivu[i].style.display = 'none'
}
//Näytetään valittu
sivu[v].style.display = ""
}

var sivu = new Array()
sivu[1] = sivu1 (DIV-elementin nimi)
sivu[2] = sivu2



js, match, poiminta, filter
Poimi kaikki nimet:



js, avainsanat
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!



business, idea, luovuus
Haasteita luovuudelle saadaan, kun käytetään puolittamisen ja tuplaamisen filosofiaa!
(Eikä + 10 %)



business, idea, työ
Oleellista ei ole tehdä, vaan saada aikaan!
Tällöin tärkeätä on tietää, mitä tehdä!

Markat tulee markkinoilta, ei tuotteesta!



MIDI, Atari, Cakewalk
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



js, array
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



js, html
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



js, html, tietokannat
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]



Excel, Word
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



vba
Range("A1")
[A1]
[a1]
[nimettyPaikka] [alku:loppu]
Cells(1,1)
Range("nimettyPaikka")



Excel
Voit yhdistää Excelin soluja isommaksi tekstilaatikoksi,
jossa teksti vierii hyvin riviltä toiselle:

Format-Cells-Alignment
v Wrap text
v Merge cells



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



vba, range
Vaihtoehtoiset tavat ilmaista sarakkeita:

Range("yksiSarake").Cells(1).Value

Range("montaSaraketta").Columns(2).Cells(1).Value



vba
Timer-function käyttö odottamiseen:

t = Timer
Do
Loop Until Timer > t + 2



js, html, mozilla, firefox, file, src
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



js, html, mozilla, firefox, file, elementit, tietokannat
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



js, html, mozilla, firefox, file, elementit, tietokannat
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, excel
XML-tiedostot avautuvat erittäin hyvin Excel2003:een!
Sarakkeet järjestyvät aakkosjärjestykseen sarakenimien mukaan.



Lajittelufunktio JS-lajittelua varten laskevasti:

if(anew > bnew) return -1
if(anew < bnew) return 1
return 0



tietokannat, kuva, acd
ACDSee v. 3.0:ssa on hyvä kuvatietokanta kansioittain.
Kuville voi antaa kuvauksen = Description
näppäimistöltä komennolla Ctrl-D



excel, valinta, lista, combo
Excel-taulukon ComboBoxissa pitää olla MatchEntry = 0
jotta siitä voisi hakea vaihtoehtoja sanan alkukirjaimella



excel, word, office, saksa
Saat saksalaisen y:n eli ü-kirjaimen näppäinyhdistelmällä Alt-129



vba, excel, tiedosto, file open
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



html, div
Voit tehdä DIV-elementtien sisälle vaikka kokonaisia HTML-sivuja:


Otsikko


Sivun sisältö



js, mozilla, firefox, ie6, event
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!



MIDI, Technics, urut
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 "



js, mozilla, firefox, ie6, cell
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



js, mozilla, firefox, ie6, radio, button
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



paint, rajaus, kuva
MS Paintissa voit kuvan rajauksen jälkeen käyttää suoraa komentoa:
"Kopioi mihin"
jolloin rajattu kuva voidaan tallentaa nimellä suoraan kovalevylle tai muistitikulle



js, copy, ie6, mozilla
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
JS-merkkijonoissa voit toteuttaa lainausmerkkejä näinkin:
\"
tai
\'



js, html, list, select
Saat SELECT-valintalistalta valitun vaihtoehdon tekstin seuraavasti:

valikko.options[valikko.selectedIndex].text

jossa "valikko" on SELECT-elementin id- ja name-attribuutin arvo



ääni, musiikki, poltto, nero
Ää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.



js, tietokanta, data, olio
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!



js, html, div, style, css, class
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



html, iframe, frame, mozilla, firefox, ie6
Tehty erilaisia kokeiluja iframen käytöstä.

Mm. valitun tiedoston lataaminen iframeen.



js, array, olio, tietokanta
var auto = [
[1, "Mersu", "300 sarja", 40000],
[2, "Volvo", "S40", 30000],

]

Yksi JS-lauseke on siis olioiden taulukko eli multidimensionalinen array!



xml,xsl, sort, lajittelu, ie5,ie6
xsl:sort EI TOIMI IE5:ssä

xsl:sort toimi hyvin IE6:ssa



js, html, time, multimedia, kuva, musiikki
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)



nauhuri, record, ääni, musiikki
Imuroin hyvän MP3-recorderin
Super MP3 Recorder Pro
http://www.supermp3recorder.com/




nauhuri, record, ääni, musiikki
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



vba, excel, versio
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")



www, html, time, multimedia
<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>



asc, kuva, lista, tulost
ACDSee v. 3.0-kuvaohjelmassa voit tulostaa tietyn hakemiston tiedostolistauksen:
Tools: Generate file listing

Voit myös kopioida useampia hakemistoja eri hakemistoon.



powerpoint, kuva, multimedia
PowerPointiin pystyy viemään koko kuvasarjan kerralla!



js, html, time
Tietojen saanti nykyisestä HTML-elementistä:

"function anna(nykyinen) {"
i = nykyinen.sourceIndex

Tietojen saanti nykyistä seuraavasta elementistä:
i + 1



vba, excel, www, html, form
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



js, html, time
Miten HTML+TIMEssa saadaan tietoja sillä hetkellä kohdalla olevan objektin ominaisuuksista?
Esim. kuvaraidan kuvista ja ääniraidan äänitiedostoista.

Ratkaisu: onbegin-tapahtuman hyväksikäyttö



js, html, time, aikajana
Miten esityksen aikajanalla voidaan siirtyä tiettyyn paikkaan?
Ratkaisu: Seeking-toiminnon hyväksikäyttö



windows, api, funktio, vba
Windowsin API-funktioiden katseluun on kätevä ohjelma:
Api Viewer 2004 [Win32api.apv]
apv2004_v310



js, html, time
beginElementAt-menetelmä toimii hyvin,
- kun se on kirjoitettu sivun HEAD-osaan
- kun kohteen begin-attribuutille ei ole annettu arvoa ennakolta eli se on tyhjä



js, html, ie6
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



ääni, musiikki
Äänityksen aloitus = F8
Äänityksen lopetus = F9

Pikanäppäimet ovat vapaasti valittavissa:
Settings - Hotkey



ääni, musiikki
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!



ääni, musiikki, mp3
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ä



ääni, musiikki, mp3, xml
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



vba, access, tietokanta, sql
Tyhjien kenttien syöttö Access-titokantaan SQL-lauseella INSERT onnistui,
kun käytin syöttöön välilyöntiä!

Esim. VBA-lauseke: email = " "



html, www
Miten toteutetaan linkki viereiseen kehykseen:

<a href="sivu1.html" target="oikea">



vba, excel, form, lista
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



vba, excel, form, lista
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…



vba, dao, tietokanta, sovellus
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.



vba, excel, word, ie6, form, www
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



vba, excel, form, userform, sovellus, kuva
Voit tulostaa UserFormin bittikuvana seuraavasti:
UserForm1.PrintForm



vba, excel, word, powerpoint, link
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



excel, form
Excelin UserFormin MultiPage-kontrollin sivuille (Page1, Page2…) sijoitetut objektit
sijaitsevat UserFormin "säiliössä".
Siksi niiden koodit löytyvät UserFormilta eikä MultiPagelta!



vba, sql, dao, tietokanta, sovellus
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.



excel
Miten inhottava vihreä "virhekolmio" saadaan pois Excelin solusta:

Työkalut - Asetukset - Virheentarkistus:
Ei kruksia kohdassa: Tekstimuotoinen pvm, jossa kaksinumeroinen vuosiluku



vba, excel
Jotta pvm-muotoilu toimisi oikein Excel-solussa VBA:lla tietoja syötettäessä:

Cells(r, 4).NumberFormat = "d.m.yy;@"



vba, excel, type, olio, tietorakenne
Type-statement toimii Excelissäkin,
mutta se ja aliohjelma on kirjoitettava Module-osaan!



js, lausekkeet
JavaScriptin säännönmukaisten lausekkeiden testilausekkeissa
isoilla ja pienillä kirjaimilla on eri merkitys:
Vrt. ryhma.match ja Ryhma.match



vba, excel
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.



musiikki, urut, keyboard, soitin
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!



business, idea
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



business, idea, elämä
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



business, idea, strategia
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



idea, elämä
Olennaista on suunnata intressit ja voimavarat jatkuvasti uusille alueille.

Matti Lainema: Hyviä yrityksiä. Ajatuksia johtamisesta. WSOY 2005



js, sort
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!



js, lista, box
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



word, excel
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-



word
Pitkien asiakirjojen hallinta perusasiakirjojen avulla:
Word-opas s. 539-



js, html, table
Saat HTML-taulukon paremman näköiseksi lisäämällä jokaisen solun alkuun:
pakotetun välilyönnin eli &nbsp;
eli merkkijonoissa:
mj += "&nbsp;" + nimi + ""

Tällöin tyhjät tietosolut eivät pilaa taulukon ulkonäköä!



vba, excel, form, tietokanta, dao, dim
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!



pc, atk, copy
Tallenna työsi kahdelle eri muistitikulle ja tikut kahteen eri paikkaan varmaan talteen!



www, html, style, css, class
Kappaleiden alkukirjaimet nettisivulla isommalla tekstikoolla:
A

Muotoilu tapahtuu tyyliluokan ".aloittava" tyylin avulla.
Huomaa, että vaikka jokainen merkki on mahdollista muotoilla erikseen, jos niin haluat.



idea, työ
Lehtijutut syntyvät neljästä raaka-aineesta:
1. Oma asiantuntemus
2. Kirjalliset ja sähköiset lähteet
3. Haastattelu
4. Havaintojen teko



ääni, wav, mp3
Ää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.



idea, elämä, filosofia
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?)



asia, avainsana, tietokanta
Tämän sovelluksen avainsanat on tallennettu Excel-tietokantaan:
C:\HTML2006\Sanarek.xls



idea, elämä
Listaa elämäsi hyvät asiat, joiden toivot säilyvän!
Tee itsellesi kiitollisuusvihko



windows, xp, tiedosto
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



asia, avainsana, tietokanta
C:\HTML2006\filterAsiat2006.html
- toimiva uusin versio
- 535 asiaa vuosilta 2000-2006, vihkosta 14 lähtien
- valintalistalla 50 tärkeintä hakusanaa



kojola, suku, sukututkimus
kotinetti.suomi.net/kojola



marjoniemi, suku, sukutukimus, tiedosto
Ulrich Bauerin Marjoniemen sukukirjan tiedot siirretty levykkeeltä omalle koneelle:
C:\Sukutukimus\Marjoniemen sukukirja



js, html, dom, element
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



html, div, style, css
<DIV style="position:absolute; top; left; width; height; overflow:scroll" >



idea, elämä, filosofia
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!




musiikki, nuotti, nuotit
Hyvä klassisen musiikin nuottiarkisto netissä:
www.pianostreet.com
Nuotit pdf-tiedostoina
Kuukausimaksu oli 3 $/kk



kuva, skannaus
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ää!!



palvelin, server, ohjelmisto, php
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



kuva, ohjelma, ohjelmisto
Paras ohjelma kuvien rajaamiseen ja koon muuttamiseen minulla on:
Microsoft Office Picture Manager



dataniemi, kotisivut, www, web, netti
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



php, käsikirja, opas
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, html
<?php
$tiedosto = "tiedosto.txt";
include ($tiedosto);
#skripti tulostaa tiedostossa olevan tekstin sivulle tähän kohtaan
?>



salasana, php, sql
VertrigoServ-paketin eri osien tunnukset ja salasanat:

MySQL/pHpMyAdmin: root/vertrigo
SQLiteManager (admin): admin/admin
SQLiteManager(data): data/data
SQLiteManager(guest): guest/guest



mySQL, tietokanta, taulu
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"




palvelin, server, ohjelmisto, php
localhost-osoite:
http://127.0.0.1/
tai
http://localhost/



php, tiedosto, teksti, txt
$viestit = file("vieraskirja.txt");

- file jakaa tekstitiedoston rivit alkioiksi viestit-taulukkoon
- tekstitiedostossa pitää olla rivinvaihdot rivien välillä



php, funktio
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



mySQL, table, auto
Itsekasvavan kentän luominen mySQL-tauluun:
CREATE TABLE taulu (id int not null primary key auto_increment)



php, xml, js
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, opas, ohjelmointi, api
mySQL:n käyttöopas löytyy netistä:
www.mysql.com/doc/

mySQL:n API-osuudesta löytyy myös



mySQL, taulu, table
mySQL:n tauluilla ei ole kokorajoitusta!



php, ruokalista, js
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.



mySQL, sql, php, tietokan
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"



php, form
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ä!



php, js, muuttujat
Voit siirtää muuttujan arvot helposti PHP:stä JavaScriptiin seuraavasti:
Lisää suoraan JavaScriptin sekaan:
php-alkutagi
echo 'nimi = "' . $nimi . '"';
php-lopputagi
alert(nimi)



js, html, elementit, dom
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);



js, html, elementit, dom
Pystyt poistamaan minkä tahansa lapsielementin seuraavasti:
Poistetaan r-elementti toiselta riviltä:
elem = document.getElementsByTagName('r')[1];
r2.parentNode.removeChild(elem)



php, ohjelma
www.phpjunkyard.com



php, muuttuja, ohjelmointi
Objektimuuttujan olemassaolo voidaan aina tarkistaa:

if($muuttujanimi){
jos muuttuja on olemassa, mitä silloin tehdään
}



html, attrib
Jonkin tiedon mukaan attribuuttiarvon enimmäispituus pitäisi olla 1024 merkkiä (HTML 2.0)



php, verkkokauppa, ekauppa
Tehty seuraavat verkkokauppaohjelmiston osiot:
Verkkokauppa: cBox.php
tuoterekisterin_hallinta.php
tilaukset.php



sql, mySQL
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



mySQL, odbc, tietokan
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, array, taulukko
PHP-taulukoissa voi indeksin paikan jättää tyhjäksi:
$taulukko[]
$taulukko[]

Tällöin arvot tallentuvat oikealle indeksinumerolle esiintymisjärjestyksessä



html, form, button, js,php
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"



html, http, form, php, palvelin, server
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.



php, mySQL
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!!



php, http, url, server, palvelin
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)



php, hakemisto, dir, tiedosto, file, list
..\www.\hakemistolistaus.php



form, file, server, palvelin, php
Jotta tiedostojen lähettäminen lomakkeen muiden tietojen mukana palvelimelle onnistuisi,
pitää form-määritykseen lisätä enctype=multipart/form-data



ado, excel, mySQL
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



vba, ado, dao, excel, access, tietokan
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!!!



xml, mySQL, admin
phpMyAdmin-ohjelmalla pystyy tekemään mySQL-tietokannan taulusta XML-tiedoston:
C:\HTML\xml\jukan_TABLE_1.xml



vba, ado, mySQL, excel
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



MIDI, WAV, ääni
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, dir
mySQL-ohjelma sijaitsee koneellani kansiossa:
…\mysql\bin



mySQL, date, time, tietokan
DATE: VVVV-KK-PP
DATETIME: VVVV-KK-PP TT:MM:SS
TIMESTAMP 14: VVVVKKPPTTMMSS
TIME: TT:MM:SS



php, mySQL, kirja
Hyvä ohjekirja:
Rami Heinisuo: PHP ja MySQL, Tietokantapohjaiset verkkopalvelut, Talentum



excel, mySQL, date, time
DATETIME-muodossa olevat kenttien sisällöt piti laittaa Excel-taulukossa näin:
välilyönti0000-00-00välilyönti00:00:00heittomerkki



html, xml, elementti, attrib
R-elementin attribuuttiin mahtui kokeessa tänään ainakin 4701 merkkiä pitkä merkkijono!



idea, tuote, työ

Suunnittele erilailisa nettifoorumeita PHP:llä työrymäkäyttöön



php, aika, date, time, form
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ä"?



php, funktio, parametri, inno, http
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&parametri2=arvo2"

Samalla tavalla voit lähettää mitä tahansa PHP-muuttujien arvoja sivulta toiselle:
a href="kohdesivun_nimi.php?muuttuja1=arvo1&muuttuja2=arvo2"



excel, vba, kuva
Voit asettaa taustakuvan Excelin laskentataulukkoon:
Worksheets("Taul1").SetBackgroundPicture "kuvatiedosto.jpg"



excel, vba, range, cell
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



excel, vba, range, cell, muuttuja
Voit käyttää Excelin Range-objektie muuttujien kanssa myös näin:
Range("a" & rivinro).Value = jotakin



int, integer, access, taulu
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', …)



int, integer, access, taulu
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', …)



int, integer, access, taulu
Jotta COUNTER aloittaisi jostakin tietystä luvusta (esim. 1001,
laita taulun ensimmäinen rivi manuaalisesti.



filter, haku, asiat, xml, js, vba, excel
filterAsiat2006.html hakee nykyisellään asiat koko tekstisisällöstä eli P-elementin sisällöstä.



mySQL, excel
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.



js, links, html
JavaScript-linkit voit toteuttaa näinkin:

< a href="#" onclick="funktio()" >



php, html form
HTML-lomakkeen lähettämisen voit php:ssä tarkistaa seuraavasti:

if(isset($_POST['submit']))



vba, excel, kaavat
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.



excel, vba, links, button
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



php, mj
Palauttaa merkkijonosta merkin esiintymiskerrat:
substr_count(strtolower($lause), $haettava)



php, html, form
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!



kuvat
Voit määrittää kuvaryhmälle perusnimen, jolloin jokaista kuvaa ei tarvitse nimetä erikseen.
Voit esittää kuvia monen eri tekijän mm. avainsanan perusteella!



php, muuttujat
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!



access, mdb, memo
Accessin MEMO-kenttään mahtuu:
- useita lauseita tai kappaleita
- jopa 32 kt tekstiä

Rivinvaihto MEMO-kentän TextBoxissa: CTRL-ENTER



access, date, time
Aikaleimausten anto Access-tietokannoissa:

Custon Formats/Date/Time
yyyymmdd hhmm



hiiri, excel, word, ie
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ä



js, css, style, html, ie, mozilla
Sekä IE:ssä että Mozillassa toimiva tyylin valinta JavaScriptillä:

document.styleSheets[0].cssRules[0].style.display = "none"

Asiaa koskeva ohjedokumentti: C:\html2006\domstylesheets.htm



PHP-muuttujan olemassaolo tarkistetaan lauseella:

if(!isset ($_POST['submit']))

Eli tarkistetaan, onko "Submit"-painiketta painettu.



excel, vba, textbox
Tekstin kopiointi tekstiboxista taulukkoon onnistuu seuraavasti:
TextBox1.SelStart = 0
TextBox1.SelLength = TextBox1.TextLength
TextBox1.Copy
Aktivoidaan haluttu taulukko
ActiveCell.PasteSpecial



excel, vba, list
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!



Maksettu ja rekisteröity GoldWave-musiikkiohjelma tänään.

GoldWavessa Copy To kopioi valinnan suoraan uuteen tiedostoon.

Voit äänittää yhtä aikaa GoldWavella ja Super Mp3 Recorderilla seuraamalla GoldWaven hyvää volumenäyttöä!



sql
Seuraavat SQL-kyselyt toimivat:

Montako asukasta:
SELECT count(asukas)

Kokonaismyynti:
SELECT sum(Kpl * Hinta)



access, sql
Ehdollinen taulujen perustaminen EI toiminut Access-tietokannoissa!!



mysql, class
Monipuolinen MySQL-tietokantaluokan käyttöesimerkki:
mysql_class1.php
Siinä on taulukon lajittelu lennosta!

W. Jason Gilmore: PHP & MySQL. Tehokas hallinta s. 651-



vba, excel, userform
Jotta UserForm olisi koko työskentelyn ajan näkyvissä, pitää sen ShowModal-ominaisuus olla False.



mysql, taulu
mySQL-taulut kannattaa luoda PhpMyAdmin-sovelluksella.
Taulun luontikoodin voi tuoda siihen kopioimalla tekstitiedostosta.



webhotel, palvelin, server
Neutech-web-hotelli-palvelun tilaus Datakolmion Jarno Mattilalta Oulaisista.
Käynti Oulaisissa.



mysql, excel, taulu, php
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!!!



vbs, recordset
Tyhjä recordset selvitetään näin:

If myRS.EOF = True Then



GoldWave, ääni, wav, mp3
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



sql
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



cd, nero
Tallennetun polttoprojektin saat avattua Nerossa:
*.nra

What would you like to burn?
- Disc Image or Saved Project



vba, public, muuttuja, userform
Public-muuttujat kannattaa määritellä Module-osassa.
Ne eivät toimineet UserFormilta käsin!



excel, listbox
Jotta taulukossa oleva ListBoxi päivittyisi kun tietoja taulukkoalueella muutetaan tai lisätään,
pitää ListBoxin AutoLoad olla True!



mysql, csv, excel
phpMyAdmin-ohjelmaan pystyy tuomaan tietoja CSV-muodossa.
Tiedostot voi tuoda oman koneen hakemistosta.
Taulun pystyy viemään pois myös Excel-versiona.



php, mysql, neutech
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!



access, kenttä, field, data
Accessissa on Currency-tietotyyppi raha-kentille



ODBC, tietokanta
Miten ODBC-tietolähde kytketään:

1. Ohjaupaneeli
2. Valvontatyökalut
3. Tietolähteet (ODBC)
4. Käyttäjätietolähde



sql, taulu
Voit lyhentää SQL kyselyä useista tauluista seuraavasti:

SELECT taulu1.*, taulu2.asnimi FROM taulu1, taulu2

jolloin tulee taulu1:n KAIKKI kentät!



excel, vba, list
Excel-taulukossa olevaan ListBoxiin viitataan:

Me.ListBox1 eikä Me.Shapes("ListBox1")



excel, vba, list, column
Excelin ListBoxien sarakemäärän maksimi VBA-sovelluksissa on valitettavasti vain 10 !!

Jos tietokannan tauluissa on kenttiä enemmän, täytyy tietoja yhdistellä sarakkeisiin.



excel, vba, list, tietokanta
Tyhjäarvojen tuonti valintalistoille ja ohjelman kaatumiset estetään:

If Not IsNull(myRS(1)) Then
.List(i,1) = myRS(1)



Access, tietokanta
Integeriä suurempi tietotyyppi Accessissa on LONG.
Suurin luku siinä on 2.147.483.648



excel, vba, list
Jotta saman valinnan voisi tehdä uudelleen ListBoxin click-tapahtumalla,
pitää valinta ensin poistaa seuraavasti:

ListBox1.ListIndex = -1



excel, vba, userform
Tooltipsin voit lisätä myös Label-kontrolliin!



excel, vba, tietokanta
Taulu liitetään tietokantaan seuraavasti:

myDB.TableDefs.Append taulu



excel, vba, format
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!



aika, IE, Mozilla, js
Mozilla laskee ajat eri tavalla kuin IE!

Kulunut aika lasketaan seuraavasti:

IE = nyt - vuosi

Mozilla = 1900 + nyt - vuosi



js, html
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 = ?



excel, vba

Application.SheetsInNewWorkbook = 9
Workbooks.Add



excel, vba, key, event
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!!



excel, vba, enter, button
UserFormilla olevan tietyn CommandButtonin toiminnan käynnistäminen Enter-näppäimellä:

CommandButtonin (vain yhden) Default-ominaisuudeksi annetaan True!!



sql
IN-operaattori mahdollistaa vaihtoehtojen antamisen SQL:ssä:

IN(1935,1944,1954)



php, html
PHP-sovelluksen aloitussivu käynnistetään ulkopuolelta linkistä:

kuvaohjelma.php?i=0

Eli välitetään sivua merkitsevän muuttujan arvo



excel, vba, list
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, vba
Excel-taulukossa piilossa olevalle alueelle pystyy kirjoittamaan ja sieltä lukemaan tietoja VBA:lla



kuva, powerpoint
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"



excel, taulukko, userform
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)



vba, copy, file
Voit varmuuskopioida ja siirtää tiedostoja VBA:lla:

FileCopy SourceFile, DestinationFile



excel, vba, copy, taulukko
Taulukko kopioidaan uuteen työkirjaan:

Sheets("Taulukko").Copy



php, html, kuva
PHP-ohjelmien kuvien nimissä ei saanut olla ä- ja ö-kirjaimia!!



vba, print, tarra
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



excel, vba, list, userform
Miten UserFormin ListBoxin valinnan (sininen valintanauha) saa pois päältä:

ListBox1.LIstIndex = -1



kartta, map, ie, mozilla
Erittäin hyvä karttasovellus netissä:
http://maps.google.fi/maps
1. Kartta
2. Satelliitti
3. Hybridi



excel, vba, key
Voit avata Visual Basic editorin Excelistä:
Alt-F11



excel, taulukko
Range-objekti Ei toiminut Speadsheet-objektilla,
vaan piti käyttää Cells-objektia!!



php, email
Sähköpostin lähettäminen PHP:n funktiolla mail() EI onnistunut VertrigoServ-palvelimelta,
mutta onnistui hyvin Neutechin palvelimelta



excel, vba, funktio
Val-funktio muuttaa merkkijonossa olevat numerot luvuksi:

Val("12maaliskuu") -> 12



excel, vba
Miten tutkitaan, onko solussa ylipäätään jotakin:
If Application.ActiveCell Then

Application-objekti on itse sovellus eli Excel.



excel, vba
If-lauseen voi kirjoittaa myös yhdelle riville:

If X = 1 Then Y = 2



excel, vba, print
Tulostusikkunan näyttäminen VBA:lla:

Application.Dialogs(xlDialogPrint).Show



vba
Loopin toteutus GoTo:lla:
uusi: (tämä on rivitunnus)

GoTo uusi



vba, api, key
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



vba
Pariton luku saadaan koodissa selville seuraavasti:

If laskuri Mod 2 = 1 Then



vba
Tutkitaan, onko solussa kaava:

If Range(osoite).HasFormula



vba, funktio
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



vba
Toiminnon käynnistäminen toisella tavalla objektia klikkaamalla:

kuvioni.OnAction = "ohjelmanNimi"

Tällöin "ohjelmanNimi" voi sijaita eri ohjelmamodulissa aliohjelmana!



excel
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



excel, vba
Väliviiva valikkoon:

Begin Group = True



excel, vba, menu
Et voi poistaa Excelin alkuperäisiä valikoita, mutta voit piilottaa ne.
Palautus alkuperäiseksi:

.Controls("Tools").Reset



excel, vba, userform
VBA-aliohjelman keskeytys siten, että UserForm ei sulkeudu:

Exit Sub
EIKÄ End



excel, vba, userform, www
UserFormilta pääsee suoraan www-sivuille:

ActiveSheet.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True



js, html, www
Uudelleenohjaus halutulle www/php-sivulle JavaScriptillä:

window.location.href = "tiedosto.php"



php, html
PHP-osoitteiden mukana lähetettyjä muuttujia voit käyttää avautuvassa PHP-tiedostossa
suoraan ilman mitään erillisiä funktiomäärittelyjä!



php, html
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!!



sql, aika, date
Aikahaarukka toteutetaan mySQL-kyselyissä:

WHERE pvm > DATE_SUB(NOW()), INTERVAL 14 DAY)
AND pvm < DATE_ADD(NOW()), INTERVAL 14 DAY)



js, php, html, www
Paluu edelliselle www-sivulle JavaScriptillä:
history.back()

PHP:llä:
header("Location: tiedosto.php");



js, php, html, tietokanta, xml
Voit tuoda tiedot mySQL-taulusta PHP:llä suoraan HTML-sivulle R-elementteihin.
Elementtejä voi olla useammanlaisia:
Esim. yritys = Y, tiedot = T



js, html, form
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ä!



php, yritys, banner
Lisätty bannerit-tietokannan tauluun "yritykset" kenttä "jnro" eli järjestysnumero,
joka mahdollistaa banneriesityksissä suosituimmuusjärjestyksen käytön!



email
Sähköpostien sijainti kovalevyllä:
C:\Documents and Settings\oem\Local Settings\Application Data\Microsoft\Outlook\archive.pst



excel, csv, php, html Voit tuoda Excel-taulukon sisällön suoraan www-sivulle CSV-tiedostona.
Tuonti tapahtuu PHP:n fgetcsv()-funktiolla.



php, mysql, date
Jotta päiväys meni oikein mySQL-tietokantaan, piti laittaa:

echo date("Y-m-d")



sql
NULL-arvoa haetaan SQL:ssä:

WHERE sarake IS NULL



php, funktio
Voit PHP:n substr-funktiolla rajoittaa taulukon sarakkeeseen tulevan tekstin pituutta
eli sarakeleveyttä.



excel, vba
Käytettävän taulukkoalueen voit Excelissä rajata myös seuraavasti:

Worksheet.ScrollArea = "a5:b10"



excel
Excel 2003:n makrojen suojaustasot:

High = ainoastaan digitaalisesti allekirjoitetut koodit suoritetaan
Medium = käyttäjältä varmistetaan
Low = koodi suoritetaan ilman varmennusta



excel, vba
Uusi kaksitoiminen makroratkaisu:

Worksheets("Sheet1").Visible = Not Worksheets("Sheet1!).Visible



excel, vba
Voit käsitellä lukittuja soluja VBA-koodilla, kun

Worksheets("Data").Protect Password:="jukka", UserInterfaceOnly:=True



excel, vba, option, button
OptionButtoneiden (radionappien) ryhmittely:

Me.Opt01.GroupName = "op1"
Me.Opt02.GroupName = "op1"
Me.Opt03.GroupName = "op1"



excel, vba
Kontrollien sarkainjärjestyksessä:

TabStop = kuuluuko kontrolli ylipäätään kiertoon
TabStop = False (ei kuulu kiertoon)
TabIndex = sarkainjärjestys



excel, vba
Rivinvaihtojen poisto Excelin solussa olevasta tekstistä:
ActiveCell.Replace Chr(10), "", xlPart
ActiveCell.Replace Chr(13), "", xlPart



style, www, kuva
Saat kuvan aina www-sivun levyiseksi:

style = "width:100%"



excel, vba, userform
Excelin UserFprmin otsikkopalkin saat piilotettua seuraavasti:

Properties:
StartUpPosition = 0 - Manual
Top = -20

Voit tällä systeemillä esittää kuvia koko ruudun kokoisena!



js, html, dia, kuva, häive
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ä



skannaus, pdf, file, epson
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.



xml, xpath, php
xpath XML-tiedoston attribuuteista onnistui:
muistikirjaA.php

xpath XML-tiedoston elementeistä onnistui:
muistikirjaE.php



php, list, funktio, mj
PHP:n list()-funktiolla saat erotettua tekstitiedoston rivillä olevat tiedot heti suoraan eri kenttiin:

list($nimi, $osoite, $puhelin) = explode(";", $line)



php, mysql, html, table, array Tyhjien tietueiden (päivien) jättäminen pois HTML-sivun taulukosta onnistui
"tarkistus-arrayn" avulla.
Arraylla tarkistetaan jokainen päivä erikseen ennen päivän tietojen tulostamista sivulle.



dia, kuva
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ä!



music, jazz
Art Tatum: Body and soul

Django Reinhardt: Minor swing
Django Reinhardt: Montmartre



php, class, sort
Hyvä class-menetelmä ja lajittelu:

class_kirjat.php



kuva, kuvaohjelma
Jukan ja Sinikan kuvia vuodelta 2007 siirretty nettiin ja toimii sieltä IE:ssä:

www.dataniemi.com/Kuvaohjelma2007.html



music, midi, audio
Hankittu netistä monipuolinen ja hyvä moniraitanauhoitusohjelma:

Multitrack Studio Professional Edition Version 4.3.1.0
www.multitarckstudio.com
Asennustiedosto: setupmtspro.exe 2,16 Mt



midi, windows
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



excel, vba, makro
Lisätty Excelin VALIKKO.xls -työkirjaan yleismakro:

Ctrl-h eli lisääHeaderit

joka lisää sivulle tietyt ylä- ja alatunnisteet



excel, vba, list
Sain toimimaan ekakerran kätevän "multiselect"-valintalistan:
Tarrat lomaviikot ja yhteisöt.xls



js, html, select, list
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ä!



Jukan suuri vinkkikokoelma

Yli 700 vinkkiä ohjelmoinnista ja elämästä vuosien varrelta

Valitse tai anna hakuehto:
Hakutulos: