próbowałem programów z sieci
ClarionView, CCVT, Cla2Txt i wszystkie mają kłopot z nagłówkami
plików .DAT, jakby nie były w formacie Clariona ???.
Może ma ktoś odpowiedni program, konwerter i mógłby wysłać,
udostepnić ..., proszę !
pozdr
AK
clarion byl w zwyklym FPP, C/S to prawdopodobnie btrieve lub pervasive,
mozna sie do tego podpiac przez np odbc po doinstalowaniu sterownika ale
z tego co pamietam to aby dostac sie do danych z zewnatrz chyba
konieczne sa pliki DDF a z tym przewaznie jest problem
--
pozdrawiam
moxi
Hehe ah te skróty zawsze z nimi mam problem :-), czy mógłbym prosić o
wyjaśnienie terminu FPP i jakiego sterownika ODBC szukać zanim
stwierdzę czy z DDF rzeczywiscie bedzie problem ?.
pozdr
AK
no coz...
FPP -> FirmaPlusPlus -> Firma++
DDF -> Data Definition File -> struktura rekordu
sterownik musi byc pod konkretna wersje btrieve lub pervasive a jaka
uzywali w FPP 3.30a C/S niestety nie wiem
--
pozdrawiam
moxi
Kurcze znależć jakiś ODBC Btrive to nawet z google jest sztuka
nielada !!!
Dlatego pytałem czy moze ma ktoś w zapasach !!!
Pozdr
AK
pozdr
Możesz wystawić gdzieś jakiś plik, aby można było sprawdzić, czy ma się
odpowiednie narzędzia. Do FPP był zestaw czterech exe-eków, które
pozwalały edytować i eksportować tabele, ale nie pamiętam jak się
nazywały, a ponieważ było to około 1996, to możliwe, że już ich nawet na
żadnym CD nie mam. Ale poszukam, tylko rzuć jakiś plik.
--
PaSkol
> Potrzebuję wyciągnąć dane ze starej bazy w programie Firma++ wersja
> 3.30a[N] C/S. Jest tam sporo rekordów i przepisywanie ręczne z
> programu FPP odpada. To chyba baza w formacie clariona,
To chyba lepiej poczytać plik CZYTAJ.TO:
/----
Program Firma++ Klient/Serwer
został oparty o nową, serwerową bazę danych Btrieve (Pervasive).
\----
W pakiecie instalacyjnym są pliki DDF z definicjami struktur baz danych.
> próbowałem programów z sieci
> ClarionView, CCVT, Cla2Txt i wszystkie mają kłopot z nagłówkami
> plików .DAT, jakby nie były w formacie Clariona ???.
To zależy od wersji Clariona. Ty używałeś narzędzi przeznaczonych do
dosowego Clariona 2.x, który ma pliki baz *.dat (z sygnaturą C3 na początku
pliku) i pliki indeksowe *.k0?
FPP C/S to Clarion w wersji co najmniej 3.x.
> Może ma ktoś odpowiedni program, konwerter i mógłby wysłać,
> udostepnić ..., proszę !
Popularne programy znane są z rozbudowanych możliwości generowania raportów
czy zestawień. Większość potrzeb użytkowników załatwia pojedyncze
zestawienia, potrzeby zaawansowane mogą wymagać dwóch zestawień, inne
potrzeby załatwiają dodatki opracowane przez autoryzowanych serwisantów
programu. W przypadku FPP C/S już w opisie którejś aktualizacji programu
podano, że jest możliwy eksport danych do plików XML w formacie zgodnym
z CDN Opt!ma. Z kolei raporty/zestawienia wydrukowane do pliku tekstowego
nietrudno przekonwertować do csv czy dbf bądź obrabiać bezpośrednio
w Excelu.
Jeśli chcesz wyciągnąć dane, aby je przenieść do innego programu, to
najbardziej sensownym rozwiązaniem jest zwrócenie się do serwisantów
programu docelowego – powinni mieć gotowe procedury importu danych i służyć
pomocą w sytuacjach awaryjnych.
--
Andrzej P. Woźniak us...@pochta.onet.pl (zamień miejscami z<->h w adresie)
Grand Inquisitor pl.comp.bazy-danych No.1 http://www.dbf.pl/faq/
Clipper Mini FAQ po polsku http://clipper.rox.pl/
je�li to btrive (ale chyba nie) to zacznij od szukania plik�w ddf, je�li
ich nie masz to chyba �adne odbc ci nie pomo�e, s� narz�dzia
btrive/perwasive do odzyskiwania nag��wk�w ale to droga przez m�k�.
--
Elaboro Online System
Przyjazne oprogramowanie dla firm, sklep i ksi�gowo�� online.
www.elaboro.pl
Szukając sterowników ODBC znalazłem starego laptopa używanego w
podrózach i tam była baza i sterowniki ODBC dla "Pervasive ODBC Engine
Interface"
Podczas konfiguracji wskazałem mu katalog bazy z plikami DAT (o które
mi chodzi) i następnie sterownik zapytał się czy utworzyć pliki DDF. W
katalogu bazy pojawiły się systemowe pliki .DDF .
Aby mieć jakieś narzędzie zainstalowałem PHP na tym laptopie (ponieważ
nie umiem przenieść, nie wiem czy można sterowników ODBC na swój
komputer) .
W PHP na laptopie uruchomiłem połączenie PHP przez ODBC :
zapuściłem skrypt PHP:
error_reporting(-1);
$dbh = odbc_connect('fpp1','','');
$tablelist = odbc_tables($dbh);
while (odbc_fetch_row($tablelist)) {
echo odbc_result_all($tablelist);
w rezultacie widać że są obecne tylko tabele systemowe :
X$Attrib
X$Field
X$File
X$Index
X$Occurs
X$Proc
X$Relate
X$Trigger
X$Variant
X$View
zapuszczony skrypt z próbą dostępu do bazy :
<?php
error_reporting(-1);
$conn=odbc_connect('fpp1','','');
$sql="Select * from MATERIA;";
$rs=odbc_exec($conn,$sql);
while ($row=odbc_fetch_array($rs))
print_r($row);
generuje błąd :
SQL error: [Pervasive][ODBC Client Interface][LNA][Pervasive][ODBC
Engine Interface]Unable to open table: MATERIA., SQL state S1000 in
SQLExecDirect in
I dalej nie wiem co robić, może jakaś podpowiedź, proszę
Może coś trzeba zrobić o czym nie wiem ?
pozdr
AK
Pewnie i tak nie jest to odpowiedni sterownik albo znów czegoś nie
wiem , ponieważ zapuscilem tworzenie tabeli :
i on utworzył plik z rozszerzeniem .MKD a nie .DAT , może to kogoś
naprowadzi na ślad
oba typy plików mają ten sam nagłówek zaczynający sie od FC.
I jeszcze jedna prośba, może ktoś ma dane o budowie struktury bazy
danych programu Firma, będzie mi łatwiej spróbować wyciągać dane może
z pomocą wyrażeń regularnych no chyba że dane są hashowane.
pozdr
AK
Hurra udało się:
Array
(
[M_KOD] => 034050/35
[M_NDX] => 0.
[M_GRUPA] => YYYY
[M_NAZWA] => 034050\35 XXXXXXX
[M_CERTYFIKAT] =>
[M_JM] => mb
[M_JM2] => mb
[M_OP] => 0.00
[M_DOSTAWCA] =>
[M_KODD] =>
[M_STAN0] => 0.0000
[M_DATA0] => 0
[M_CENA0W] => 0.00
[M_WALZ0] => Zł
[M_CENA0F] => 0.00
[M_WAZONA] => 1.330000
[M_IDZAKUPU] => 1746
[M_STAN] => 0.0000
[M_STANMIN] => 0.0000
[M_STANMAX] => 0.0000
[M_ILEZAM] => 0.0000
[M_DOKLADNOSC] => 0.0000
[M_KOD_KAS] => 0
[M_CENAZW] => 1.33
[M_WALZ] => Zł
[M_CENAZF] => 1.33
[M_CENAS1] => 1.75
[M_WALS1] => Zł
[M_ZAOK1] => 0.0
[M_FLAGS1] => 1
[M_CENAS2] => 0.00
[M_WALS2] => Zł
[M_ZAOK2] => 0.0
[M_FLAGS2] => 0
[M_CENAS3] => 1.35
[M_WALS3] => Zł
[M_ZAOK3] => 0.0
[M_FLAGS3] => 1
[M_PO] => 23.00
[M_PO2] => 23.00
[M_POKWOTA] => 0.00
[M_CENA_D] => 2.16
[M_USLUGA] => 0
[M_ZAMIENNIK] =>
[M_EDNAZWA] => 0
[M_EDCECHA] => 0
[M_FLAG1] => 0
[M_FLAGS4] => 1
[M_PRODUKT] => 0
[M_LINK] => 0
[M_SWW] =>
[M_USER] =>
[M_TAG] => 0
[M_A] => 0
[M_X] => 0
[M_Y] => 0
[M_Z] => 0
No więc błąd był w tym że podczas tworzenia połączenia ODBC, nie
tworzyć nowych plików słownikowych a wskazać trzeba te od bazy danych,
które w końcu znalazłem.
Swoją drogą co to zabezpieczenie kluczami sprzętowymi skoro na bazie
można działać bez klucza (który wyciągnąłem z USB).
Wszystkim dziękuję i pozdrawiam
AK
W katalogu są exeki :
ARJ to wiadomo
CR.exe ?
DFPP.exe
FPP.exe
Fppt.exe -> to jest jakis pakiet serwisowy ale wola kod.
PCL2PDF.exe tez wiadomo
WSKAZNIK.exe
pozdr
AK
> On 3 Lip, 12:07, Kmicic <lotto...@gmail.com> wrote:
[...]
> No więc błąd był w tym że podczas tworzenia połączenia ODBC, nie
> tworzyć nowych plików słownikowych a wskazać trzeba te od bazy danych,
> które w końcu znalazłem.
Przecież pisałem, że pliki DDF są w pakiecie instalatora.
> Swoją drogą co to zabezpieczenie kluczami sprzętowymi skoro na bazie
> można działać bez klucza (który wyciągnąłem z USB).
Głównym zadaniem klucza sprzętowego jest pilnowanie interesu producenta
programu, czyli płatnej licencji na liczbę użytkowników równocześnie
pracujących w programie.
> W katalogu są exeki :
Dopiero po fakcie zauważyłem, że piszesz o wersji klient/serwer. A ja
mówiłem o czystej dosówce. Zresztą zrobiłem przegląd narzędzi jakie
posiadam i wygląda na to, że tych do Clariona pozbyłem się lata temu.
Zatem nie pomogę, ale widzę, że już jest postęp.
--
PaSkol
No załapało i faktycznie zacząłem szukać w instalacji jak pisał
poprzednio kolega.
Jeszcze raz dziękuję wszystkim za pomoc i chęc pomocy również.
ps: mam jeszcze jedną zagwozdkę format daty która jest zapamiętywana
jako integer np 76716 to 2001-01-12 i krok to 1 dzień. Co to za
format ???.
zaczyna się jakieś 200 lat temu :-) , z godziną podobny problem pewnie
w minutach od tego początku nowoczesnego świata :-).
Może macie jakieś informacje na temat formatu daty w F++ ?.
Pewnie że można w locie przeliczać kotwicząc np własnie na znanej
dacie i czasie.
pozdr
AK
Dzięki Twoim wskazówkom znalazłem, dziekuję. Ale w instalacji nie
znalazłem ODBC , skąd ono sie wzięło w kompie kliencie ?. Przypadek
czy może FPP ten driver instaluje ?.
pozdr
AK
AK
> Dzięki Twoim wskazówkom znalazłem, dziekuję. Ale w instalacji nie
> znalazłem ODBC , skąd ono sie wzięło w kompie kliencie ?. Przypadek
> czy może FPP ten driver instaluje ?.
Zapewne ten komputer był stanowiskiem roboczym serwisanta.
Pełna instalacja FPP składa się z dwóch części – instalatora Btrieve
oraz instalatora samego programu. Wygląda na to, że sterownik ODBC był
w pakiecie instalatora Btrieve i został zainstalowany, żeby przenieść dane
z programu używanego wcześniej bądź dokonać później jakiejś naprawy danych,
np. przy okazji kontroli danych przed upgradem programu, zmiany stawki VAT,
zamiany SWW/KU na PKWiU itp.
a możesz coś więcej napisać o tym odbc ( np jaka firma to zrobiła ) ?
a jeśli to jakiś opensource to o wrzuceniu tego (jak masz instalkę) na
jakiś ftp nie wspomnę ;-)
--
Elaboro Online System
Przyjazne oprogramowanie dla firm, sklep i księgowość online.
www.elaboro.pl
Tak to pozostałość po prawdopodobnie instalacji programu Pervasive
Software - PSQL.
Próbowałem zainstalować ODBC na innym kompie próbując zarejestrować
pliki dll sterownika
ale nie udało mi się (pewnie nie znam wszystkich parametrów
potrzebnych do instalacji).
Jak coś uda mi się zrobić chętnie się podzielę. ODBC działa ok i
chetnie zamieszczę skrypt PHP
korzystający z ODBC i zrzucający całą baze do SQL nadający się wprost
do przeniesienia
do MYSQL np.
<?php
class firmaImport {
public $dbh = NULL;
public $table_name_list = array();
public $fileds_info = array();
public $fieldprop =array(
'INTEGER' => array('len'=>false, 'prec'=>false, 'mysqltype'
=> 'INTEGER'),
'SMALLINT' => array('len'=>false, 'prec'=>false, 'mysqltype'
=> 'SMALLINT'),
'UTINYINT' => array('len'=>false, 'prec'=>false, 'mysqltype'
=> 'TINYINT'),
'DECIMAL' => array('len'=>true , 'prec'=>true , 'mysqltype'
=> 'DECIMAL'),
'DOUBLE' => array('len'=>false, 'prec'=>false, 'mysqltype'
=> 'DOUBLE'),
'CHAR' => array('len'=>true , 'prec'=>false, 'mysqltype'
=> 'VARCHAR')
);
public function __construct($odbcdb='fpp1') {
if ($this->connect($odbcdb,'','')) {
$this->getTableList();
$this->getTableFieldsInfo();
}
}
public function connect($odbcdb) {
return ($this->dbh = odbc_connect($odbcdb,'','')) ? true : false ;
}
public function getTableList() {
$res = odbc_tables($this->dbh);
while( $row = odbc_fetch_array($res) ) {
if ($row["TABLE_TYPE"] =="TABLE") $this->table_name_list[]=
$row["TABLE_NAME"];
}
}
public function getTableFieldsInfo($tablename) {
foreach($this->table_name_list as $tablename) {
$sql = "select * from $tablename";
$res = odbc_exec($this->dbh, $sql);
$this->fields_info[$tablename]=array();
for($i=1; $i <= odbc_num_fields($res); $i++) {
$this->fields_info[$tablename][]=array("NAME"=>odbc_field_name($res,
$i),"TYPE"=>odbc_field_type($res, $i),"LEN"=>odbc_field_len($res,
$i),"PREC"=>odbc_field_precision($res, $i),"SCALE" =>
odbc_field_scale($res, $i));
}
}
}
public function CreateTable($tablename) {
$out ="";
$out .= "CREATE TABLE `$tablename` (\n";
foreach($this->fields_info[$tablename] as $info) {
$fprop =$this->fieldprop[$info["TYPE"]];
$fmysql = $fprop['mysqltype'];
$len = $info["LEN"];
$prec = $info["PREC"];
$scale = $info["SCALE"];
$lenparent ="";
if (($fprop["len"]) and ($fprop["prec"])) $lenparent ="($prec,
$scale)";
elseif ($fprop["len"]) $lenparent ="($len)";
$out .= "`{$info["NAME"]}` $fmysql $lenparent ,\n";
}
$out = trim($out,','."\n").");\n";
return $out;
}
public function DumpTable($tablename,$limit=200) {
$out ="";
$sql = "select * from $tablename";
$res = odbc_exec($this->dbh, $sql);
$head='INSERT INTO `' .$tablename. '` ';
$fields='(';
foreach($this->fields_info[$tablename] as $info)
$fields .= "`{$info["NAME"]}`,";
$fields = trim($fields,',').')';
$n=$limit;
$alldata="";
while ( $row = odbc_fetch_array($res)) {
$data='(';
foreach($row as $val) $data .= "'".mysql_escape_string($val)."',";
$data = trim($data,',') . '),';
$alldata .= $data;
$n--;
if ($n<=0) {
$alldata = trim($alldata,',').";\n";
$out .= $head . $fields . ' VALUES ' . $alldata;
$n = $limit;
$alldata="";
}
}
if ($alldata) {
$alldata = trim($alldata,',').";\n";
$out .= $head . $fields . ' VALUES ' . $alldata;
}
return $out;
}
} // class
$fpp = new firmaImport();
foreach($fpp->table_name_list as $tablename) {
echo $fpp->CreateTable($tablename),"\n\n";
echo $fpp->DumpTable($tablename),"\n\n";
}
?>
skrypt uruchamiam w Notpadzie++ z moim pluginem z sourceforge
npppluginforphp klawiszem f9 (run).
powodzenia