|
Registriert seit: 1. Nov 2007 Ort: Marburg Lahn 235 Beiträge Delphi 2007 Professional |
#1
Hallo,
ich habe ein kleines Problem welches sicherlich schon einige hier hatten ![]() Also in meinem Programm geht es darum, Kundendaten die in eine Exceltabelle geschrieben wurden, einzulesen und in Outlook als Kontakte zu speichern, dies funktioniert eigentlich auch schon Wunderbar. Der Knackpunkt ist jetzt aber das die Kundenkontakte in der Exceltabelle mehrere Ansprechpartner in den jeweiligen Firmen haben können aber nicht klar definiert ist wieviele es maximal sein können. Z.Z. ist es so das ich mit maximal 5 Ansprechpartnern pro Kundenkontakt rechne und es auch so programmiert habe das fünf Ansprechpartner für einen Kontakt in Outlook gespeichert werden. Aber wie das so ist gibt es irgendwann einen Kunden der sechs Ansprechpartner hat, deswegen möchte ich das gerne dynamisch machen aber ich weiß nicht genau wie. Hier ist erstmal meine procedure wie ich sie z.Z. habe, sprich mit dem festen Wert von fünf Ansprechpartnern pro Kundenkontakt:
Delphi-Quellcode:
Ich habe schon probiert die ganzen Blöcke in eine Schleife zu packen, in etwa so(einfach mal so runter geschrieben, sind bestimmt ein paar Fehler drin):
procedure TKontakt.FillProbs(WorkSheet: _WorkSheet; activeRow : Integer;
APCount, FillCount, lastActiveRow : Integer; isHeader : Boolean); var isZero : Boolean; isEmptyStr : String; begin if isHeader and (FillCount <= 1) then begin inc(activeRow); activeRow := activeRow + APCount; end else begin activeRow := lastActiveRow + APCount; end; FLastActiveRow := activeRow; KndNr := Worksheet.Cells.Item[activeRow, 1].Value; CompanyName := Worksheet.Cells.Item[activeRow, 2].Value; FullName := Worksheet.Cells.Item[activeRow, 3].Value; BusinessAdressStreet := Worksheet.Cells.Item[activeRow, 4].Value; BusinessAddressPostalCode := Worksheet.Cells.Item[activeRow, 5].Value; BusinessAddressCity := Worksheet.Cells.Item[activeRow, 6].Value; BusinessTelephoneNumber := Worksheet.Cells.Item[activeRow, 7].Value; BusinessFaxNumber := Worksheet.Cells.Item[activeRow, 8].Value; EmailAddress := Worksheet.Cells.Item[activeRow, 9].Value; BusinessHomePage := Worksheet.Cells.Item[activeRow, 10].Value; FileAs := Worksheet.Cells.Item[activeRow, 11].Value; bsLfdNr0 := Worksheet.Cells.Item[activeRow, 12].Value; bsAP0 := Worksheet.Cells.Item[activeRow, 13].Value; bsFunktion0 := Worksheet.Cells.Item[activeRow, 14].Value; bsTelNr0 := Worksheet.Cells.Item[activeRow, 15].Value; bsFaxNr0 := Worksheet.Cells.Item[activeRow, 16].Value; bsEMail0 := Worksheet.Cells.Item[activeRow, 17].Value; bsAPCount := 1; isZero := false; isEmptyStr := Worksheet.Cells.Item[activeRow + 1, 12].Value; if (Worksheet.Cells.Item[activeRow + 1, 12].Value <> '0') and (isZero = false) then begin if isEmptyStr <> '' then begin bsLfdNr1 := Worksheet.Cells.Item[activeRow + 1, 12].Value; bsAP1 := Worksheet.Cells.Item[activeRow + 1, 13].Value; bsFunktion1 := Worksheet.Cells.Item[activeRow + 1, 14].Value; bsTelNr1 := Worksheet.Cells.Item[activeRow + 1, 15].Value; bsFaxNr1 := Worksheet.Cells.Item[activeRow + 1, 16].Value; bsEMail1 := Worksheet.Cells.Item[activeRow + 1, 17].Value; bsAPCount := 2; isZero := true; end; end; isEmptyStr := Worksheet.Cells.Item[activeRow + 2, 12].Value; if (Worksheet.Cells.Item[activeRow + 2, 12].Value <> '0') and (isZero = true) then begin if isEmptyStr <> '' then begin bsLfdNr2 := Worksheet.Cells.Item[activeRow + 2, 12].Value; bsAP2 := Worksheet.Cells.Item[activeRow + 2, 13].Value; bsFunktion2 := Worksheet.Cells.Item[activeRow + 2, 14].Value; bsTelNr2 := Worksheet.Cells.Item[activeRow + 2, 15].Value; bsFaxNr2 := Worksheet.Cells.Item[activeRow + 2, 16].Value; bsEMail2 := Worksheet.Cells.Item[activeRow + 2, 17].Value; bsAPCount := 3; isZero := true; end else begin isZero := false; end; end else begin isZero := false; end; isEmptyStr := Worksheet.Cells.Item[activeRow + 3, 12].Value; if (Worksheet.Cells.Item[activeRow + 3, 12].Value <> '0') and (isZero = true) then begin if isEmptyStr <> '' then begin bsLfdNr3 := Worksheet.Cells.Item[activeRow + 3, 12].Value; bsAP3 := Worksheet.Cells.Item[activeRow + 3, 13].Value; bsFunktion3 := Worksheet.Cells.Item[activeRow + 3, 14].Value; bsTelNr3 := Worksheet.Cells.Item[activeRow + 3, 15].Value; bsFaxNr3 := Worksheet.Cells.Item[activeRow + 3, 16].Value; bsEMail3 := Worksheet.Cells.Item[activeRow + 3, 17].Value; bsAPCount := 4; isZero := true; end else begin isZero := false; end; end else begin isZero := false; end; isEmptyStr := Worksheet.Cells.Item[activeRow + 4, 12].Value; if (Worksheet.Cells.Item[activeRow + 4, 12].Value <> '0') and (isZero = true) then begin if isEmptyStr <> '' then begin bsLfdNr4 := Worksheet.Cells.Item[activeRow + 4, 12].Value; bsAP4 := Worksheet.Cells.Item[activeRow + 4, 13].Value; bsFunktion4 := Worksheet.Cells.Item[activeRow + 4, 14].Value; bsTelNr4 := Worksheet.Cells.Item[activeRow + 4, 15].Value; bsFaxNr4 := Worksheet.Cells.Item[activeRow + 4, 16].Value; bsEMail4 := Worksheet.Cells.Item[activeRow + 4, 17].Value; bsAPCount := 5; end; end; end;
Delphi-Quellcode:
Hier stoße ich jetzt natürlich auf das Problem, dass ich nicht für jeden Schleifendurchlauf die Variablen(also für den zweiten Schleifendurchlauf müsste ich die Variablen bsLfdNr2, bsAP2, bsFunktion2 usw. nehmen) die Variablen nehmen kann ich brauch
procedure TKontakt.FillProbs(WorkSheet: _WorkSheet; activeRow : Integer;
APCount, FillCount, lastActiveRow : Integer; isHeader : Boolean); var isZero : Boolean; isEmptyStr : String; begin if isHeader and (FillCount <= 1) then begin inc(activeRow); activeRow := activeRow + APCount; end else begin activeRow := lastActiveRow + APCount; end; FLastActiveRow := activeRow; KndNr := Worksheet.Cells.Item[activeRow, 1].Value; CompanyName := Worksheet.Cells.Item[activeRow, 2].Value; FullName := Worksheet.Cells.Item[activeRow, 3].Value; BusinessAdressStreet := Worksheet.Cells.Item[activeRow, 4].Value; BusinessAddressPostalCode := Worksheet.Cells.Item[activeRow, 5].Value; BusinessAddressCity := Worksheet.Cells.Item[activeRow, 6].Value; BusinessTelephoneNumber := Worksheet.Cells.Item[activeRow, 7].Value; BusinessFaxNumber := Worksheet.Cells.Item[activeRow, 8].Value; EmailAddress := Worksheet.Cells.Item[activeRow, 9].Value; BusinessHomePage := Worksheet.Cells.Item[activeRow, 10].Value; FileAs := Worksheet.Cells.Item[activeRow, 11].Value; bsLfdNr0 := Worksheet.Cells.Item[activeRow, 12].Value; bsAP0 := Worksheet.Cells.Item[activeRow, 13].Value; bsFunktion0 := Worksheet.Cells.Item[activeRow, 14].Value; bsTelNr0 := Worksheet.Cells.Item[activeRow, 15].Value; bsFaxNr0 := Worksheet.Cells.Item[activeRow, 16].Value; bsEMail0 := Worksheet.Cells.Item[activeRow, 17].Value; bsAPCount := 1; isZero := false; isEmptyStr := Worksheet.Cells.Item[activeRow + 1, 12].Value; for i := 0 to X begin if (Worksheet.Cells.Item[activeRow + i, 12].Value <> '0') and (isZero = false) then begin if isEmptyStr <> '' then begin bsLfdNr1 := Worksheet.Cells.Item[activeRow + i, 12].Value; bsAP1 := Worksheet.Cells.Item[activeRow + i, 13].Value; bsFunktion1 := Worksheet.Cells.Item[activeRow + i, 14].Value; bsTelNr1 := Worksheet.Cells.Item[activeRow + i, 15].Value; bsFaxNr1 := Worksheet.Cells.Item[activeRow + i, 16].Value; bsEMail1 := Worksheet.Cells.Item[activeRow + i, 17].Value; bsAPCount := i + 1; isZero := true; end; end; end; end; ![]() ![]() Habe dann später irgendwie an ein Array mit Variablen gedacht, geht das? ![]() Danke für alle hilfreichen Antworten, ich steh echt vor einer Mauer ![]() VG Alex |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |