Päivää vaan...
Pikku ongelman poikanen. Rassaan siis delphillä tehä yhtä judanssia ja ongelma on nyt seuraavanlainen.
Kuinka saada tietokannan solu takaisin NULL arvoon? Kun siis solussa käy jotain kirjoittamassa tai lisäilemässä, niin kuinka saan sen NULL tilaan takaisin. Tiedän että pelkkä tyhjän syöttäminen ( '' ) ei tosiaan tunnu olevan sama kuin NULL arvo. Käyntän siis ihan perus dbgridiä ja sen muita komponentteja. SQL lauseet on vaan koodattu suoraan koodiin, joten periaatteessa pitäsi olla helppoa, mutta kun...
Jos joku tietäväinen viitsisi kertoa, tiedän että ei ole iso ongelma.. kai..
Kiitoksia
*laulellen martti servon, mikä on kun ei taidot riitä* =)
Pikku ongelman poikanen. Rassaan siis delphillä tehä yhtä judanssia ja ongelma on nyt seuraavanlainen.
Kuinka saada tietokannan solu takaisin NULL arvoon? Kun siis solussa käy jotain kirjoittamassa tai lisäilemässä, niin kuinka saan sen NULL tilaan takaisin. Tiedän että pelkkä tyhjän syöttäminen ( '' ) ei tosiaan tunnu olevan sama kuin NULL arvo. Käyntän siis ihan perus dbgridiä ja sen muita komponentteja. SQL lauseet on vaan koodattu suoraan koodiin, joten periaatteessa pitäsi olla helppoa, mutta kun...
Jos joku tietäväinen viitsisi kertoa, tiedän että ei ole iso ongelma.. kai..
Kiitoksia
*laulellen martti servon, mikä on kun ei taidot riitä* =)
Vastaukset 9
Vanhimmat
laittaa siihen vaan päälle?
Delphissä Null ja sql:ssä NULL
'Insert Into "C:\MyTable.db" '
'(DataDate, AcctNO, OrderNo)'
'Values ("' sDataDate '","' sAcctNo '","' Null '") ';
En tiedä asiasta mitään mutta jos arvoksi asettaa nul niin arvoksi tulee null. (eli yhden l:n heitto)
Eikös INSERT lisää tietueen eikä kirjoita päälle ?
Siis täytyy käyttää UPDATEa.
Eli SQL:ssä menis jotenkin näin:
UPDATE MyTable SET OrderNo = NULL WHERE AccNO = xxxx
jossa xxxx = se AccNO jonka tietutetta muutetaan.
Jos halutaan muuttaa kaikista tietueista niin tietysti koko WHERE pois
Kiitti ekaks ideasta, mutta on pikku ongelma!
Ku siihen solu joka haluttaan MAHDOLLISESTI myös "null" arvoon tulee tieto textboxista, jossa syöttämällä null tulisi null arvo kenttään, ja jos halutaan syöttää jotain muuta, niin sitten se tallentuu joko tekstinä tai numeroina.
Eli lause on nyt näin:
update ' edit1.text '
set ' edit2.text ' = ''' edit5.text '''
where ' edit2.text ' = ''' edit3.text '''
Ja koska edit5.text kentän molemmin puolin pitää olla hipsut se tulkitsee kirjoitetun null arvon tekstiksi null...
Kiinnostaisikin mitä tohon pitäs lisätä, että solun voi jotenkin null:ta, mutta myös syöttää tekstiä ja numeroita.
NVL(kenttä, arvo) lausetta on jo kokeiltu, mutta ei oikein pelitä.
Visaista.. =)
En nyt heti keksi muuta ratkaisua kuin kaksi erillistä UPDATEn rakennus riviä.
Eli jotain tyyliin:
if (strlen(edit5.text)==0)
{update ' edit1.text '
set ' edit2.text ' =NULL
where ' edit2.text ' = ''' edit3.text '''}
else
{update ' edit1.text '
set ' edit2.text ' = ''' edit5.text '''
where ' edit2.text ' = ''' edit3.text '''}
Kiitti, tota pitää kokeilla, ei ollesakkaa huono idea. Tai sit kehitellä ton pohjalta jotain.
Kiitos ja kumarrus. =)
Kokeilepa SQL -lausetta:
Update Omataulu
SET Omakentta=NULL where ID=50000
Oletukset:
Taulusi nimi on Omataulu
Kentän nimi, jonka haluat NULLiksi on Omakentta
Siinä/niissä tietueissa, joissa haluat tuon Omakentta -kentän NULLata, on kentän ID arvona 50000
Missään muussa tietueessa EI ole kentän ID arvona 50000
Tuota sitten vain muokkaamaan omaan tilanteeseesi sopivaksi.
Käyttö esim. Näin:
Query1.SQL.Clear;
Query1.SQL.Add('Update Omataulu SET Omakentta=NULL where ID=50000');
Tai toki myös:
Query1.SQL.Text := 'Update Omataulu SET Omakentta=NULL where ID=50000';
Lopuksi sitten:
Query1.Execute;
Ja ei välttämättä mitään lainaus- tms. merkkejä.
Delphissä:
NIL käytetään asettamaan osoitin "ei osoita mihinkään arvoon" -tilaan. Siis näin:
var
P : Pointer; / tai PChar tai...
begin
// ... koodia
P := nil;
// ... koodia
end;
mutta NULL on SQL:n "tyhjä kenttä/arvo puuttuu" -arvo.