Date   zodpovězená otázka

VB6/VBA

Dobrý den.

Pomozte, prosím! Jedná se o banální problém, kterému nemůžu přijít na kloub. Můj program zapisuje mimo jiné do souboru aktuální datum.

Print #1, Date

Pak chci tuto proměnnou ze souboru načíst do proměnné, která je deklarovaná jako typ Date.

Dim bububu as Date
input #1, bububu

Zmiňuji pouze důležitou část kódu, pro stručnost. Při pokusu o načtení proměnné mi program nahlásí Owerflow (přetečení čeho??), případně ještě Type mismatch..

Opravdu tomu nerozumím. Když jednou zapíšu proměnnou typu Date, proč ji pak nemůžu načíst do proměnné typu Date?

Pak jsem si ještě všimnul, že příkaz Date (nebo je to vlastnost všech proměnných tohoto typu?) přidává za hodnotu jednu mezeru, např. dnešní datum vrací jako "23.1.2009 " <- mezera. Tohle má nějaký smysl? :)

Předem děkuji za jakoukoli reakci.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro zápis do souboru použijte

Write #1, Date

tak bude datum zapsán ve formátu Date - v souboru je to také v podstatě text, ale např.: 23.1.2008 se pomocí Write zapíše jako: #2009-01-23# a to VB pochopí jako datum

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

oprava: např.: 23.1.2009 se pomocí Write zapíše jako: #2009-01-23# - ještě mám vánoce :-))

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Write? To slyším prvně:) Má to ještě nějaké zajímavé vlastnosti? Jinak mockrát díky, tohle je samozřejmě perfektní řešení;)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, Write je právě k tomu, co jste nyní poznal - umožňuje zapsat údaje i s určením typu. Ve vašem případu: kdybyste načítal data do textové proměnné, zapisujte s Print a dostanete 23.1.2009. Tohle by se vám v textu asi nelíbilo #2009-01-23#. A naopak 23.1.2009 byste ze String musel převestt na Date, bez převodu to nejde, jak jste se přesvědčil. Při zapsání s Write jde čtení do typu Date jednodušeji, ne?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano, to určitě jde.. Vaše vysvětlení samozřejmě chápu a v programu už mi to funguje. Myslel jsem spíš, jestli se Write používá i v nějakých jiných případech.. Když už jsme u toho, VB zná příkaz na převedení typu String na typ Date?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

A co takhle...

DateValue(Date As String) As Date

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

S barevným odlišením to trochu mate, jakoby Date As String byla definice, ale jsme ve VB 6. Tak raději příklad

 Option Explicit

 Private Sub Form_Load()
   Dim MojeDatum As Date
   Dim TextDatum As String
   TextDatum = "24.1.2009"
   ' Řetězec (text) nebo proměnnou typu String k převodu na typ Date 
   ' lze otestovat funkcí  IsDate - vrátí-li li funkce True, je převod možný.
   If IsDate(TextDatum) Then
     MojeDatum = DateValue(TextDatum)
     MsgBox MojeDatum, vbOKOnly, "Funkce DateValue"
     ' Podobná funkce je Cdate:
     MojeDatum = CDate(TextDatum)
     MsgBox MojeDatum, vbOKOnly, "Funkce Cdate"
  Else
    MsgBox "Chyba, převod " & TextDatum & " na typ Date nelze uskutečnit! "
  End If
End Sub
nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Paráda, díky moc! :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback