Autor Zpráva
tatyalien
Profil
Dobrý den, mám problém, když vytvořím dbf soubor, tak se mě vkládají hodnoty textu, čísel, ale logickou hodnotu tam nemůžu narvat.

V manuálu je psáno že musí mít hodnotu "T" jako true, "F" jako false, na jinejch stránkách je zase psáno "0" a "1", ale ať tam cpu všechny hodnoty od: "T", "TRUE", "PRAVDA", "P", "t", "true" atd, tak to tam nemůžu narvat, soubor se vytvoří, ale tento sloupec je prázdný :-(

$polozky = array(
  array("Popis", "C", 50),
  array("Logicka", "L"),
  array("CenaSDani", "N", 11, 2),
);        
// název souboru
$nazev_souboru = "$cesta/export.dbf";
//Vytvoříme DBF soubor
if (!dbase_create($nazev_souboru, $polozky)) {
    return "Nepodařilo se vytvořit DBF soubor.";
}
$dbf_soubor = dbase_open($nazev_souboru, 2);           
dbase_add_record($dbf_soubor, array ('první', 'T', 2.50));
dbase_close($dbf_soubor);
nightfish
Profil
řádek 3
array("Logicka", "L", 1),
tatyalien
Profil
nightfish:
Tím to není, stále se nezobrazuje :-(

a manuál u této hodnoty říká, že se nemá dávat hodnota délky
Logic "L" - no field length or precision
NOTE: must be entered as either "T" or "F"


a to ještě tam potřebuji dostat logickou TRUE počeštěnou PRAVDA excel starej a open office to udělá, ale ručně přez php to nějak mě nejde :-(
nightfish
Profil
možná je potřeba smazat export.dbf, aby se vytvořil znovu
pamatuju si, že jsem s tím taky dlouho bojoval, ale nakonec se mi to podařilo a jediný rozdíl proti mému funkčnímu kódu byla právě ta jednička u definice logického sloupce
tatyalien
Profil
soubor vždycky smažu, když ho genetuji (ručně před spuštěním skriptu :-( )
Když si soubor otevřu pak v poznámkovém bloku je tam sice vidět "T" jako true, v excelu se nezobrazí nic. Pokud si vygenerovaný soubor zkusím imploudnout přez import do db tak mě to hodí špatný typ logické hodnoty.

Nevím excel (starý), ukládá logický typ i přímo PRAVDA, open office taky. ale jak uložit počeštěnej přez phpko asi nejde :-(

jsem si chtěl ušetřit práci ukládání do csv a pak ruční otevírání a přeuložení do dbf. -> import do účetního programu.
nightfish
Profil
Zkusil jsem import "svého" dbf do accessu a místo "true" mi to ve sloupci hodí "-1". Soubory používám jenom pro import do účetního systému a tam to funguje správně, takže víc bohužel neporadím.
tatyalien
Profil
Já to tahám do Money S3 účetního programu přez jejich import (aktualizace cen, atd) když soubor uložím z excelu starého s logickou hodnout PRAVDA vygeneruje to dgf 4ku kde je pak přez poznámkáč "T" a import to vezme, ale přez tohle to hodí špatný formát :-D
nightfish
Profil
používám to právě pro Money S3 a funguje mi to nádherně
pro jistotu přikládám kód

<?php
  $fields = array(
    array("popis", "C", 50),
    array("cenanak", "N", 4, 4),
    array("cenaprod", "N", 4, 4),
    array("cenadph", "L", 1),
    array("katalog", "C", 10),
    array("dphprod", "N", 4, 2),
    array("dphnak", "N", 4, 2),
  );
  
  $db = dbase_create("import-preklad.dbf", $fields);

  $rec = array('abcdef', 25, 50, "T", '12345', 10, 0);

  dbase_add_record($db, $rec);
  dbase_close($db);
?>
tatyalien
Profil
Tak i po tomto mě vygeneruje soubor (použitý tvůj kód), ale pokud spustím importační program pro money S3 "Import skladových karet do systému Money S3" verze 2.0 tak to hodí: "Špatný formát položky "CENADPH" v databázi.

Tady je vygenerovaný soubor:
Odkaz
nightfish
Profil
tatyalien:
verze 2.0
aha, používám verzi 1.3 z jejich webu

stejným skriptem jsem vygeneroval soubor
od vašeho se liší ve 144. bajtu (váš má 00, můj 01)
samozřejmě svůj naimportuji bez problémů, váš hlásí chybu (Špatný formát...)
kde k rozdílu došlo, nemám zdání
soubor generuji na PHP Version 5.2.9-1 na Windows Vista x64
tatyalien
Profil
Soubor generuji na PHP Version 5.3.1 na Windows Vista x64 (xampp-win32-1.7.3.exe)

Tak i po nainstalovaání verze 1.4 od ciglera a importování vygenerovaného souboru to hodí hlášku: "špatný formát položky "CENADPH" v databázi.

Soubor byl vygenerovaný skriptem:
$nazev_souboru = "$cesta/export_cen_pokus.dbf";    
  $fields = array(
    array("popis", "C", 50),
    array("cenanak", "N", 4, 4),
    array("cenaprod", "N", 4, 4),
    array("cenadph", "L", 1),
    array("katalog", "C", 10),
    array("dphprod", "N", 4, 2),
    array("dphnak", "N", 4, 2),
  );
  
  $db = dbase_create($nazev_souboru, $fields);

  $rec = array('abcdef', 25, 50, "T", '12345', 10, 0);

  dbase_add_record($db, $rec);
  dbase_close($db);


Vážně už nevím :-( pokud by jste měl nějaký nápad, jsem kdyžtak i na icq: 159-475-902
nightfish
Profil
tatyalien:
pravděpodobně tedy nějaký rozdíl v dbase extenzi mezi PHP 5.2 a 5.3 (tak mě napadá - od PHP 5.3.0 byla dbase extenze zrušena (resp. přesunuta do PECL, kde se o ni nikdo nestará), kde se bere v xamppu? pamatuju, že na linuxovém serveru jsem si ji dokompilovával)
tatyalien
Profil
nightfish:
abych pravdu řekl, akorát jsem podle návodu odkomentoval v php.ini dbase...

[PECL]
extension=php_dbase.dll

neuploudnul by jsi mě prosím tvou knihovnu?
tatyalien
Profil
Neuploudnul by jsi mě prosím php_dbase.dll abych zkusil jí ručně "vyměnit"?
nightfish
Profil
tatyalien:
http://www.zralog.cz/test/php_dbase.dll

(ale pochybuji, že bude v PHP 5.3 fungovat)
tatyalien
Profil
Tak nefungovala :-( no nic, takže to budu muset dělat dál přez převod do uložení do csv a pak excelem do dbf :-( Díky ale za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0