SoftMaker.de

Deutschsprachiges Diskussionsforum
Aktuelle Zeit: 19.05.2013 12:00:00

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 02.09.2009 09:41:17 
Offline

Registriert: 08.03.2009 09:36:08
Beiträge: 78
Hallo,

ich habe in einer PM-Datei (Anlage) in 5 Spalten Daten (Spielplan im Sport) hinterlegt.

Spalte 1 = Datum (01.09.2009)
Spalte 2 = Uhrzeit (20:00)
Spalte 3 = Heimmannschaft mit max. 25 Zeichen (Verein 1)
Spalte 4 = Auswärtsmannschaft mit max. 25 Zeichen (Verein XYZ)
Spalte 5 = Ergebnis mit max. 5 Zeichen (9:1)

Mit einem Script will ich jetzt erreichen, dass die Daten in einem Text-Dokument (Anlage) ausgegeben werden und zwar mit „festen Stellen“.

Datum und Zeit würden in der Text-Datei in der Spalte 1,
Heimverein in der Text-Datei in der Spalte 21,
Auswärtsverein in Text-Datei in der Spalte 47,
Ergebnis in der Spalte 73 beginnen.

Wie die Text-Datei aussehen sollte finden Sie in beiliegenden Text-Datei.

Da ich von Programmierung keine Ahnung habe, bitte ich um Mithilfe!
Könnte mir einer aus dem Forum mir ein entsprechendes Script erstellen.

Danke im voraus.

Albert

Anlagen
PM-Datei und Text-Datei


Dateianhänge:
TEST1.tmd [15.99 KiB]
118-mal heruntergeladen
spielplantext.pmd [20.5 KiB]
113-mal heruntergeladen
Nach oben
 Profil  
 
BeitragVerfasst: 03.09.2009 09:44:17 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1461
Ehrlich gesagt verstehe ich das Problem nicht so ganz, weil mir augenscheinlich Sinn und Zweck dieser Übung entgehen.
Darum frage ich einmal zurück:
Warum ist es nicht möglich, die Tabelle aus PM als Tabelle in TM zu übernehmen und anschliessend noch minimal graphisch aufzubereiten (Spaltenbreiten regulieren, Schriftarten anpassen u. dgl.)?
Wenn es denn unbedingt feste Abstände sein müssen, warum nicht einfach Tabelle als *.dbf exportieren, in DM importieren und als Textdatei mit fester Länge exportieren?
Warum soll eine Textdatei mit fester Zeichenbreite mit TM bearbeitet werden? Wäre ein reiner Texteditor nicht besser geeignet? Steht überhaupt eine unproportionale Schrift mit fester Zeichenbreite zur Verfügung?
Die "textverarbeitungsgerechte" Lösung des Problems schiene mir eher über eine Tabelle in TM oder dann über die Tabulatorfunktionen zu laufen statt mittels fester Zeichenbreiten und Leerzeichen-Zählen.

Und dann erübrigt sich im Grunde auch BM, denn dann gibt's da eigentlich nichts, was sich sinnvollerweise automatisieren liesse.

Ich bitte also um einige erklärende und erhellende Auskünfte.


Nach oben
 Profil  
 
BeitragVerfasst: 03.09.2009 13:32:26 
Offline

Registriert: 08.03.2009 09:36:08
Beiträge: 78
Hallo Panosis,

Sinn und Zweck dieser Übung ist, ich muss diverse Spielpläne in ein Sporttabellenprogramm eingeben. Die Spielpläne bekomme ich in einer Tabellenkalkulation (EXCEL, PlanMaker usw.) geliefert. Selbstverständlich könnte ich auch ca. 1000 Begegnungen per Hand eingeben. Diese Arbeit ist aber sehr zeitaufwendig. Das Sporttabellenprogramm beinhaltet eine Importfunktion. Bei diesem Import muss genau vorgegeben werden, ab welcher Spalte das Datum, die Heimmannschaft, die Auswärtsmannschaft, das Spielergebnis beginnt.

Beispiel:
Code:
03.09.2009 20:00 Verein 1                  Verein 2                  9:1
10.09.2009 20:30 Verein XYZ                Verein ABC                8:8

Datum ab Spalte 1
Zeit ab Spalte 12
Heimmannschaft ab Spalte 18 (25 Zeichen)
Auswärtsmannschaft ab Spalte 44 (25 Zeichen)
Ergebnis ab Spalte 70

Ein erster Test
Die PM-Datei als Text-Datei gespeichert (Textexport, Feste Feldbreiten). Eigentlich schon sehr gut, aber der Abstand zwichen Heimverein und Auswärtsverein muss 25 Zeichen betragen, da das Sportprogramm sieht hier eine Länge von 25 Zeichen vorsieht.
Hier kann eine Länge der Feldbreite nicht vorgegeben werden?

Albert


Nach oben
 Profil  
 
BeitragVerfasst: 03.09.2009 17:42:37 
Offline
SoftMaker Volunteers
SoftMaker Volunteers
Benutzeravatar

Registriert: 03.10.2007 12:58:39
Beiträge: 1854
Albert hat geschrieben:
......
Die Spielpläne bekomme ich in einer Tabellenkalkulation (EXCEL, PlanMaker usw.) geliefert. ...... Das Sporttabellenprogramm beinhaltet eine Importfunktion. Bei diesem Import muss genau vorgegeben werden, ab welcher Spalte das Datum, die Heimmannschaft, die Auswärtsmannschaft, das Spielergebnis beginnt.

........
Datum ab Spalte 1
Zeit ab Spalte 12
Heimmannschaft ab Spalte 18 (25 Zeichen)
Auswärtsmannschaft ab Spalte 44 (25 Zeichen)
Ergebnis ab Spalte 70


Nur für´s Verständnis - die Peilung hat sich noch nicht bei mir eingestellt.
Kann die Excel/PM-Tabelle entsprechend obigen Angaben konfiguriert werden? Da ein Programm immer Vorgaben für seine Schnittstelle hat, muss man in der Regel die Importdatei/Tabellendatei entsprechend anpassen. Das wäre hier doch weitaus einfacher, als ein BM-Prg zu entwickeln - oder wo sehe ich das Problem nicht?


Nach oben
 Profil  
 
BeitragVerfasst: 03.09.2009 19:11:47 
Offline

Registriert: 08.03.2009 09:36:08
Beiträge: 78
Hallo,

ich habe in den zwei beiliegenden Dateien noch einmal versucht den Sachverhalt
zu erläutern.

Bitte informiert Euch in den Dateien.

Albert


Dateianhänge:
spielplan.tmd [13.16 KiB]
117-mal heruntergeladen
spielplantext.pmd [36.5 KiB]
102-mal heruntergeladen
Nach oben
 Profil  
 
BeitragVerfasst: 03.09.2009 22:24:00 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1461
Inzwischen habe ich Alberts Problem verstanden - meine ich jedenfalls.
Es geht darum, aus einer Tabelle einer Tabellenkalkulation eine Datenbank-Tabelle mit festen Feld-Längen zu erzeugen.

Das ist prinzipiell mit keiner Tabellenkalkulation möglich, weil die Zellen in einer Tabellenkalkulation weder typgebunden noch auf eine bestimmte Länge festgelegt sind.
Hingegen ist es in einer Datenbank klassischen Zuschnitts (es gibt auch andere) so, dass jede Zelle einem bestimmten Typ wie Zahl, Datum, Text usw. zugeordnet ist und zudem über eine definierte Länge in Anzahl Zeichen oder bei Zahlen z. B. auch in Bytes o. ä. verfügt.
Soweit ich sehe, kann man mit PM eine solche Festlegung nicht bewerkstelligen. Man kann zwar in verschiedenen Text-Formaten abspeichern, muss dann aber in der Tat von Hand mit einer geeigneten Textverarbeitung oder einem Text-Editor nacharbeiten.
Ich hatte schon in meinem ersten Posting dazu angemerkt, dass sich der Export als *.dbf und dann Import in eine Datenbank da aufdränge. Da eine PM-Tabelle in eine Art Datenbank importiert werden soll, wäre es eigentlich angebracht, die Umwandlung mit dieser Datenbank selbst vorzunehmen. Wenn sie das nicht kann, ist sie entweder schlecht programmiert oder längst veraltet.
Mit BM liesse es sich wahrscheinlich hinbiegen, indem man zuerst PM eine Text-Datei anlegen lässt und dann mittels Such- und Ersetzfunktionen diese Datei durchforstet und anpasst. Das wird aber ziemlich aufwendig zu programmieren. Der Weg über eine gute Datenbank scheint mir da nach wie vor einfacher.

Und noch ein Hinweis: Ich kann mit meinem SMO 2008 weder die eine noch die andere Beispieldatei öffnen, weil diese offensichtlich mit einer neueren Version erstellt sind. Da SMO 2010 nicht auf dem Markt ist und da dies das Forum für die 2008er-Version ist, wäre es angebracht, auch in diesem Format abzuspeichern.


Nach oben
 Profil  
 
BeitragVerfasst: 04.09.2009 07:20:30 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.02.2007 08:37:26
Beiträge: 2940
Machbar wäre das schon, würde ich sagen...

Tabelle in PM als Text mit fester Breite exportieren und dann mit einem kleinen Stück Software, die Leerzeichenabstände nachträglich korrigieren. Oder als CSV mit Komma-Separation (oder so) und dann dieses CSV einlesen und mit den korrekten Formatierungen wieder zurückschreiben. Man kennt ja die Länge des aktuell gelesenen String-Fragments und kann die Anzahl der benötigten Leerschläge einfach durch Subtraktion ermitteln. Letzteres halte ich sogar für die deutlich schlauere Lösung, weil man auch auf Zellen mit Überlänge korrekt reagieren kann.

Generell also: Machbar, auch mit dem BM, aber tatsächlich nur unter Verwendung von PM und BM, den TM kann man bei dieser Konstellation streichen.

Aber zusammencoden tue ich das nicht.


Nach oben
 Profil  
 
BeitragVerfasst: 25.02.2010 20:11:50 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Hallo Albert,

falls du noch keine Lösung gefunden hast, hier ist das Skript:

Code:
'Albert.bas
'
'
'Datum ab Spalte 1
'Zeit ab Spalte 12
'Heimmannschaft ab Spalte 18 (25 Zeichen)
'Auswärtsmannschaft ab Spalte 44 (25 Zeichen)
'Ergebnis ab Spalte 70

'CURSOR MUSS SICH AUF DER ERSTEN DATUMSZELLE BEFINDEN, DANN SKRIPT STARTEN         

SET pm = CreateObject( "PlanMaker.Application" ) 'Verbindung aufbauen
pm.Application.Visible = True
pm.Activate

OPTION EXPLICIT
DIM Zeile, Spalte AS LONG
DIM DAT AS STRING * 11
DIM ZEIT AS STRING * 5
DIM HM AS STRING * 26
DIM AM AS STRING * 26
DIM ERG AS STRING * 5
DIM D AS STRING

Zeile = pm.ActiveSheet.Selection.row 'Zeile in der sich der Cursor befindet
Spalte = pm.ActiveSheet.Selection.Column

OPEN "D:\ALBERT.TXT" FOR output AS #1    '<---- Name der Ausgabedatei

'############# Nur zu Kontrolle der Spaltenpositionen. Kann weggelassen werden.########
PRINT #1, "         111111111222222222233333333334444444444555555555566666666667777777"
PRINT #1, "123456789012345678901234567890123456789012345678901234567890123456789012345"
PRINT #1, ""
'######################################################################################

DO

   D = pm.ActiveSheet.Cells.Item( Zeile, Spalte ).Value
   DAT = D
   ZEIT = pm.ActiveSheet.Cells.Item( Zeile, Spalte + 1 ).Value
   HM = pm.ActiveSheet.Cells.Item( Zeile, Spalte + 2 ).Value
   AM = pm.ActiveSheet.Cells.Item( Zeile, Spalte + 3 ).Value
   ERG = pm.ActiveSheet.Cells.Item( Zeile, Spalte + 4 ).Value


   PRINT #1, DAT; ZEIT; " "; HM; AM; ERG

   Zeile = Zeile + 1

LOOP UNTIL D = ""

CLOSE #1

SET pm = NOTHING 'Verbindung aufheben




Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de