Toon posts:

[BCB6] TNMSMTP mail recipients uit database *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben nu bezig met een systeem op te zetten voor emails te versturen naar mensen uit een database. Maar ik krijg het maar niet voor elkaar om een email aan meerdere mensen tegelijk te versturen.

Dit is voor het toaddress:

code:
1
NMSMTP1->PostMessage->ToAddress->Add( emailadres );


De query die ik hiervoor gebruik om alle emailadressen uit de database te versturen:

code:
1
2
3
4
5
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add(" SELECT Email FROM klant_gegevens WHERE Status = 'Jojo' ");
Form1->ADOQuery1->ExecSQL();
Form1->ADOQuery1->Active = true;


Kan iemand mij helpen?

BVD Dank. :O

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Ik heb je vorige topic niet voor niets gerenamed, zie ***** Lees dit! Over topictitels in P&W *****. Een en ander staat ook genoemd in onze algemene guide over hoe een goed en duidelijk topic te starten, namelijk P&W FAQ - De "quickstart".

En eerlijke vraag: heb je wel eens geprogrammeerd voor je huidige opdracht? Zet je niet een beetje te hoog in? Want volgens mij, no offence, heb je de ballen verstand van programmeren en nog een paar goede boeken en/of tutorials nodig. Wat heb je al zoal geprobeerd, heb je al even logisch nagedacht over wat er uit die SQL query komt en wat je als recipient veld nodig hebt?

[ Voor 15% gewijzigd door curry684 op 17-12-2003 11:11 ]

Professionele website nodig?


Verwijderd

Topicstarter
Ik heb hier een aantal boeken liggen, docenten geraadpleegd en verschillende zaken geprobeerd. Het emaillen lukt gewoon alleen aan meerdere personen mailen niet. Heb het via een lookupcombobox, dbgrid enzovoorts geprobeerd maar allemaal tevergeefs. Is dit misschien mogelijk via een array of is er een makkelijker manier. En nee ik ben geen super programmeur maar probeer wel alles uit de kast te halen om het te leren. Motto: eerst zelf proberen tot ik erbij neer val en dan pas vragen en dat doe ik dus bij deze.

Verwijderd

Is die NMSTP niet onderdeel van die kl@te inet componenten in Delphi 4,5 ?? Ik zou zeggen kijk eerst ';s ff naar Indy: http://www.nevrona.com/indy , of geef iets duidelelijker aan wat er nu precies niet lukt.
Ik zie 2 stukken code, 1 is het toewijzen van een mailadres (lijkt me ok), en 2 is een start van een query.

Waar loop je vast?

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 15:12
Als je eens de help leest van TADOQuery, dan zie je dat ExecSQL dient voor SQL-statements die geen cursor teruggeven (bvb, insert, delete, update, maar geen select). Daarvoor moet je
C++:
1
ADOQuery1->Open () ;

uitvoeren. (Vervang je 2 laatste lijnen door deze lijn)

Merk wel op dat dit niets te maken heeft met je mailprobleem: zoals maui71 al zei: er staan 2 stukken code waar de samenhang niet van duidelijk is.

Hoe doorloop je je query, om de emailadressen toe te voegen?

Verwijderd

Topicstarter
De query wordt eerst uitgevoerd. De query moet alle email adressen selecteren die de status jojo hebben in de database. En dan is het de bedoeling dat aan al deze emailadressen tegelijk een mailtje verstuurd wordt.

En volgens mij moeten deze 1 voor 1 toegevoegd worden aan ToAddress. Maar ik krijg alleen het eerste email adres uit het resultaat van de query toegevoegd.

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 15:12
Ik herhaal:
schoene schreef op 17 december 2003 @ 11:40:
Hoe doorloop je je query, om de emailadressen toe te voegen?
Maw: toon eens je code. Als wij geen info krijgen, kunnen we je ook niet helpen

Verwijderd

Topicstarter
hier is de complete code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::verstuurClick(TObject *Sender)
{
 NMSMTP1->PostMessage->FromAddress = Edit1->Text;
 NMSMTP1->PostMessage->FromName = Edit2->Text;
 NMSMTP1->PostMessage->Subject = Edit3->Text;

 Form1->ADOQuery1->Close();
 Form1->ADOQuery1->SQL->Clear();
 Form1->ADOQuery1->SQL->Add(" SELECT Email FROM klant_gegevens WHERE Status = 'Jojo' ");
 Form1->ADOQuery1->Open();

 NMSMTP1->PostMessage->ToAddress->Add( ? EMAILADRESSEN ? );

 NMSMTP1->PostMessage->ToBlindCarbonCopy->Add(Edit5->Text);
 NMSMTP1->PostMessage->Body->Assign(Memo1->Lines);
 NMSMTP1->SendMail();
}


Hier -> ? EMAILADRESSEN ?, wil ik dus graag de emailadressen uit de daar bovenstaande query.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Tja, P&W is eigenlijk niet bedoeld om anderen jouw code te laten afmaken.

Nu heb je een query uitgevoerd, en moet je dus nog de opgehaalde waarde zien te bekomen.
Kijk eens in de help naar de properties en methods van TADOQuery, ik geloof dat die een method 'FieldByName' of een property 'Fields' oid zal hebben, waarmee je dus een bepaald veld van je query kunt ophalen:
bv:
code:
1
2
3
4
if( !ADOQuery1->Eof && !ADOQuery1->Bof )
{
    blaat->Add(ADOQuery1->FieldByName("emailadres").AsString());
}



Ik denk dat het voor jou wel aan te raden is om eens een tutorial of een boek te lezen dat zich vooral toespitst op data-access in C++ Builder (of Delphi). Als je nu eens leert hoe je in de VCL met databases kunt omgaan, dat je dan al een hele stap voorwaarts kunt zetten.

[ Voor 22% gewijzigd door whoami op 17-12-2003 12:11 ]

https://fgheysels.github.io/


  • schoene
  • Registratie: Maart 2003
  • Laatst online: 15:12
Wel, eerst en vooral: leer eens de help gebruiken van Builder, je zou schrikken hoeveel je er in kan vinden.

Je moet dus het resultaat van je query doorlopen, en per record van je query het emailadres toevoegen aan je ToAddress. Je kan de query doorlopen via First () en Next (), en controleren of je op het einde bent van je query adh van Eof. Het correcte veld ophalen kan je via FieldByName ().

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 17 december 2003 @ 12:02:
Hier -> ? EMAILADRESSEN ?, wil ik dus graag de emailadressen uit de daar bovenstaande query.
We verwachten hier in Programming & Webscripting zoals gezegd wel iets meer oplossend vermogen dan je nu aan de dag legt.

Analyseer je situatie nu eens rustig, desnoods op een stuk papier. Je hebt 2 randvoorwaarden: het resultaat van je query en de input van dat mailadres. Je probleem is hoe van A naar B te komen. Wat moet je dan doen:
• Bedenk in welk formaat je de data hebt klaarstaan (datatypes etc.)
• Bedenk in welk formaat je het moet hebben (datatypes, notatieeisen etc.)
• Bedenk stap voor stap hoe je die conversieslag maakt.

Met andere woorden: analyseer het logische proces en kijk eens waar je klemloopt.

Professionele website nodig?


Verwijderd

Topicstarter
Bedankt voor de hulp. Het werkt nu wel met first(0 en next(). Ik begrijp dat het niet de bedoeling is dat hier complete oplossingen gegeven worden maar dat was ook niet de bedoeling. Een stille hint is altijd wel makkelijk. Mar goed, ik wil het graag beter leren en ik wilde nu eigenlijk nog vragen of iemand een heel goed boek weet voor Borland C++ Builder 6? Ik hoor het graag.
Pagina: 1