Schamann.net

…děláme vJeci jinak…

Unexpected error

Při kompilaci se těsně před zapsáním .exe souboru vyskytla chyba „unexpected error“.

Chybu jsem odstranil postupným odebíráním části projektu jsem objevil chybný ctl.
Jeho odstraněním se problém vyřešil.

Chybu způsobil:
Class DHTMLEDLibCtl.DHTMLEdit

Pravděpodobně změnou konfigurace při aktualizaci prohlížeče IE.

Redim vícerozměrného pole

Při pokusu o ReDim nebo ReDim Preserve u vícerozměrného pole toto nelze použít na jinou než poslední část pole.

tedy:

Dim Pole()  ‘Projde

ReDim Pole (10,10)  ‘Projde

Redim Pole(10,15)  ‘Projde

ReDim Pole(15,15) ‘Err 9 – Subscript out of range

Řešení je pouze jedno a to:

Erase Pole

ReDim Pole(15,15)

… a znovu naplnění celého pole.

Při použití menšího čísla než je současné dojde ke ztrátě dat!

Redim Pole(14,14) ‘Projde, ale ztratí se data z pozice (15,0) – (15,15) a zaroveň všechny na pozici (x,15)

ieframe.dll – nefunguje po přeinstalaci Win.

Po nové instalaci Windows se může stát že původní projekt obsahující reference na ieframe.dll nebude fungovat.

Objeví se Hláška e Error:

‘ieframe\1′ dll not found

Problém je zde:’ MS Internet Control’ v Project-> Component.

Oprava je nasledující:

1, Otevřít projekt a ignorovat vsechny chyby

2, Odstranit control z formulářů kde se nachází Browser.

3, Uložit projekt

4, Otevřít projekt

5, Odstranit reference Microsoft Internet Control

6, Odstranit Component Microsoft Internet Control

7, Uložit projekt

8, Otevřít projekt

9, Přidat referenci C:\WINDOWS\system32\ieframe.dll

10, Přidat Component Microsoft Internet Control

11, Uložit projekt

12, Otevřít projekt

13, Vložit do formulářů control Browser a nazvatje stejnými jmény jako byly.

14, Uložit a vše by mělo být OK.

NULL – Jak to vložit do databáze?

V běžném recordsetu připojeném na MySQL pravděpodobně nelze vložit standartním postupem hodnotu NULL do políčka v databázi. Standartní postup považuji přes DataEnvironment.
Příklad:

Set rs = DataEnvironment1.rsVolnyPrikaz
DataEnvironment1.VolnyPrikaz
With rs
If Not IsNull(.Fields(„ZPRACOVANO“).Value) Then
.Fields(„ZPRACOVANO“).Value = sNull
.Update
End If
End With

Na řádku .Update  vždy skončí chybou.
Nelze ani:

Set .Fields(„ZPRACOVANO“).Value = Null

Nebo jsem alespon žádný jiný způsob nenašel.
Pro zápis hodnoty NULL lze ale použít běžný SQL zápis UPDATE:

Set rs = DataEnvironment1.rsVolnyPrikaz
DataEnvironment1.Commands.Item(„VolnyPrikaz“).CommandText = „UPDATE Tabulka SET `ZPRACOVANO` = NULL“
DataEnvironment1.VolnyPrikaz
Set rs2 = Nothing

Takto vše funguje jak má a hodnota Null se zapiše do tabulky databáze bez chyby.
Pokud někdo zná nějaký způsob jak zapsat Null do DB pomocí DataEnvironment – SEM S NÍM :)

Error -2147217864

Řádek nelze nalézt a aktualizovat. Pravděpodobně byly od posledního čtení změněny některé hodnoty.
Run-time error: -2147217864 (80040e38):
The specified row could not be located for updating. Some values may have been changed since it was last read.

Tato chyba se objeví v případě, že do otevřeného recordsetu ukládáme stejnou hodnotu jaká už v databázi je, a následně tento recordset chceme Updatovat. Sloupec HODNOTA obsahuje znaky „ABCD“ a do stejného sloupce opět vkládám znaky „ABCD“ Procedura skonci popisovanou chybou na červeném řádku při pokusu o rs.Update

Příklad:

sText = „ABCD“
Set rs = DataEnvironment1.rsUloz
DataEnvironment1.Uloz
rs.Fields(„HODNOTA“).Value = sText
rs.Update
rs.Close

Řešení:
Kontrolovat zda vkládaná hodnota není stejná jako již existující záznam v databázi (Stejný výsledek dostaneme i při pokusu o vložení NULL do sloupce který NULL obsahuje).

sText = „ABCD“
Set rs = DataEnvironment1.rsUloz
DataEnvironment1.Uloz
If rs.Fields(„HODNOTA“).Value <> sText Then

rs.Fields(„HODNOTA“).Value = sText
rs.Update

End If
rs.Close

Po této úpravě již procedura proběhne bez uvedené chyby.

Schamann.net doporučuje smažák.info