Autor Beitrag
Andreas30GT
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 13.08.03 09:00 
Ich muss eine Hausarbeit mit Delphi schreiben und ich habe keine Ahnung was mein Prof da will Also die Aufgabe:Eine MySql Export-Datei enthält die Tabellendefinition sowie die dazugehörigen INSERT - Befehle

Es soll ein Programm geschrieben werden, das unter Zuhilfenahme dieser Datei eine neue Datei erzeugen kann, die UPDATE - Befehle in SQL Syntax enthält, die wiederum vom MySql verstanden werden. UPDATE CONTACTs set firma='XYZ',abt='wichtige Abteilung' where p_id=pid+1100; der Updatebefehl ist eine Auflistung von Spaltennamen einer Tabelle mit deren Inhalt, wie im Beispiel dargestellt.

Das Programm soll folgende Anforderungen erfüllen:
- Erkennen der 1. INSERT-Zeile
- Erkennen des Tabellennamens
- Erkennen aller Spaltennamen und deren Auflistung auf einem Formular
- Möglichkeit der Eingabe einer Record-Nummer
- Anzeige der Spaltennamen mit dem Inhalt des Records.
- bei Änderung Abspeicherung als UPDATESTRING in der Datei update.txt

Das Auffinden eines Spaltennamens mit dessen Inhalt wird mit einer Prozedur erledigt, die über die lfd. Nr. des Parameters aufgerufen wird.

Zeigen Sie am Ende des Programms an (auch wenn nichts geändert wurde), wieviele Zeichen jede Spalte maximal enthalten hat.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
DROP TABLE IF EXISTS CONTACTs;
CREATE TABLE CONTACTs (
  p_id int(11) NOT NULL auto_increment,
  firma varchar(70) NOT NULL default '',
  abt varchar(40) NOT NULL default '',
  uabt varchar(40) NOT NULL default '',
  funct varchar(40) NOT NULL default '',
  pobox varchar(20) NOT NULL default '',
  housename varchar(50) NOT NULL default '',
  steet varchar(50) NOT NULL default '',
  zip varchar(10) NOT NULL default '',
  ci_town varchar(30) NOT NULL default '',
  country varchar(20) NOT NULL default '',
  PRIMARY KEY  (p_id)
) TYPE=MyISAM;


Folgende Daten sind von der Datenbank gegeben:
ausblenden Quelltext
1:
2:
3:
INSERT INTO CONTACTs (p_id,firma,abt,uabt,funct,pobox,housename,steet,zip,ci_town,country) Values (1,'GARA Commando','','','','','','Hertogstraat 300','3001','Heverlee','Belgien');
INSERT INTO CONTACTs (p_id,firma,abt,uabt,funct,pobox,housename,steet,zip,ci_town,country) Values (2,'Südafrikanische Botschaft','','','','','','Jungfraustrasse 1','3005','Bern','Schweiz');
usw....


Moderiert von user profile iconUGrohne: RePosting entfernt, Code-Tags eingefügt und Text gekürzt (Ordnung muss sein!)


Zuletzt bearbeitet von Andreas30GT am Mi 13.08.03 13:17, insgesamt 2-mal bearbeitet
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 13.08.03 09:19 
Coole Aufgabe.

sowas durfte ich nie in meiner ausbildung machen. Wir haben immer nur DOS Oberflächen in C geschrieben. Wurks.

Also ich würde so vorgehen:

Ich würde alle Inserts nach und nach auseinanderfummeln und in ein StringGrid schreiben. Eine Zeile, ein Record...ein Feld, eine Spalte...klar. ist halt ein bisschen Copy() Arbeit.

Nun hast du ja schon die Beschreibung jeder Spalte und die Records darunter. Jetzt kannst du eine Such Procedure schreiben die dir eben die zu suchende Zeile hervor bringt.

Sobald man was ändern will baust du eben einen UPDATE String aus den geänderten und nicht geänderten Feldern zusammen und setzt den in ein extra Memo, wo man ihn evtl. nochmal editieren kann. Dieses Memo kannst du dann per Knopfdruck mit

Memo1.Lines.SaveToFile(update.txt)

speichern.

Diese Variante setzt natürlich vorraus das es stets die selbe Tabelle in diesem SQl Dumb ist und das bei jedem Insert stets was mit übergeben wird. Sonst verrrücken sich die Werte in den Spalten.

-lemming