begin process at 2012 05 28 13:49:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Base de données

 > 

base d edonnee / probleme si un champs est vide


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

base d edonnee / probleme si un champs est vide

mardi 24 août 2004 à 15:38:45 | base d edonnee / probleme si un champs est vide

callaghan1981

Please il y aurai un gentil admin qui pourrai ;e proposer une solution??

mon programme se connecte a une base de donnee... tt est parfais,..

mon programme lis et consulte la base de donnee
tt est parfais..

mais maintena je veux selectionner certaine donnee et les sauvegarder ds un doc txt.
tt est PRESQUE parfais.

il arrive qu une base de donne ne soit pas tt le temp complete ( genre il y a un champs vide) bref, j ai une chaine d ecaractere, et lorsque le champs est vide, mon programme saute..
bref comment faire comprendre a ma chaine d ecaractere que
"c est vide et que c est pas grave "



bst = pRstList->Fields->GetItem((long)1)->Value; // jobname
if (!bst == NULL)
{ strcpy(q->jobname,bst);}
else {strcat(q->jobname, " " );}
printf ( " %s", q->jobname);

voila ce que cela maffiche ds ma console qd je fais tourner le programme

js0551Luzerne, Switzerland 2004-0315-12-001
js0552Arnult Park, Munich 2004-0315-14-001
js0554



a js0554 tt s arrete le programme passe a la second procedure..
car ds la base de donnee il n ay a pas de jobname pour le jobnumber Js0554 bref
les eutres donne suivante ( js0555) ne sont pas lu ce qui est "emmerdant "lol
commen faire?
merci
mardi 24 août 2004 à 16:13:26 | Re : base d edonnee / probleme si un champs est vide

BruNews

Administrateur CodeS-SourceS
Les champs NULLABLES sont a prendre dans un:
_variant_t var;
var = pRstList->Fields->GetItem((long)1)->Value;
if(var.vt != VT_NULL) etc...

ciao...
BruNews, Admin CS, MVP Visual C++
mardi 24 août 2004 à 18:43:12 | Re : base d edonnee / probleme si un champs est vide

callaghan1981

merci d avoir repondu si vite mais j ai un nouveau probleme

effectivement tt marche..
bref si c est une valeur null la chaine n aura pas de valeur..
mais le truc
si tu veux j ai une liste chaine et pour certaine donne je les met dans certaine variable de ma liste chaine..
et qd jenregistre ma liste ds un fichier texte le truc c est que le job number comprend 2 valeur

try
{
printf("Jobnumber Indexnumber Idcont Content \t \t box Idnote \t Note \n");
while(!pRstList->EndOfFile)
{
Project *q;
q = new Project;
q->succ = NULL;

bst = pRstList->Fields->GetItem((long)0)->Value; // jobnumber
strcpy(q->jobnumber,bst);
printf ( " %s", q->jobnumber );

var = pRstList->Fields->GetItem((long)1)->Value;
if(var.vt != VT_NULL)
{
bst = var;
strcpy(q->jobname, bst);
}
else
{
strcpy(q->jobname, " ");
}
printf ( " %46s", q->jobname);
bst = pRstList->Fields->GetItem((long)2)->Value; // indexnumber
strcpy(q->indexnumber,bst);
printf ( " %18s", q->indexnumber);

lval= pRstList->Fields->GetItem((long)3)->Value; // idcontent
q->idcontent=lval;
printf ( " %2d", q->idcontent);

bst = pRstList->Fields->GetItem((long)4)->Value; // content
strcpy(q->content,bst);
printf ( " %30s", q->content);

lval = pRstList->Fields->GetItem((long)5)->Value; // boxnumber
q->boxnumber = lval;
printf ( " %3d", q->boxnumber);

lval= pRstList->Fields->GetItem((long)6)->Value; // idnote
q->idnote = lval;
printf ( " %2d", q->idnote);

bst = pRstList->Fields->GetItem((long)7)->Value; // note
strcpy(q->note,bst);
printf ( " %15s \n", q->note );

if (L_project == NULL) L_project = q;
else
{
q->succ = L_project;
L_project = q;
printf("%s %s \n",L_project->jobnumber,L_project->jobname);
}
pRstList->MoveNext();
}


lorsque je demande d afficher L_project jobnumber
ds cette variable il y a a la fois le jobnumber et aussi la valeur de jobname..

affiche sur la console
js0575Arlington Arlington


js0575Arlington ca c est L_project->jobnumber
Arlington c est L_project->jobname


commen faire pour resoudre ce probleme?? c est le seul que j ai

merci bcp

mardi 24 août 2004 à 19:29:10 | Re : base d edonnee / probleme si un champs est vide

BruNews

Administrateur CodeS-SourceS
Je ne mettrai pas un recordset dans une liste chainee, impensable comme methode. Faut tamponner direct dans le fichier texte. J'ai fait exemple ici:
ADO: MDB VERS TXT STRUCTURE PAR TAB (WIN32)
http://www.cppfrance.com/code.aspx?id=11201

ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 25 août 2004 à 13:38:47 | Re : base d edonnee / probleme si un champs est vide

callaghan1981

bjr
j ai ete voir ton exemple j arrive a prendre tt les valeur
mais apres je suis perdu, je n arrive pas a utiliser le tapon..c est a dire a mettre ds la variable l ensemble des variable pour enregistrer tt cela ds le fichier texte..comment je dois faire??
jarrive a utiliser les fonction bnstrcpy etc etc mais je vois pas tro a quoi elle me serve? et qd j utilise *psz++ = '\t'; ca fai tro bizare genre au lieu d avoir bs8008 comme indexnumber j ai s8008 (il manque le b)
j ai compris la connection, la lecture, la selection, mais je suis perdu pour enregistrer cela ds le fichier texte..
peu tu m aider? je dois rendre tt ca ds 2 jour
j ai terminer le reste des programme qui vont avec mais il me manque cela..les donne ds un fichier texte
merci


//Fld(0) Jobnumber chaine de caractere
//Fld(1)Jobname chaine de caractere peux etre nul
// Fld(2) indexnumber chaine de caractere
//Fld(3) idcontent int
//Fld(4) content chaine de caractere
// Fld(5) boxnumber int
// Fld(6) idnote int
//Fld(7) note chaine de caractere

// SaveX1 Function
//First, access and save the LIST table.
void SaveX1()
{
char szTXTJSA[] = "H:\\JSA.txt";
_ConnectionPtr pdb = 0; // pointeur database
_RecordsetPtr prs;

HANDLE hfl;
DWORD dwWrite;
long lval, lerror = 1; // presume erreur
char szbuff[160]; // tampon pour chaque ligne du txt
char *psz; // pointeur ecriture dans szbuff
_bstr_t bst;
_variant_t var;

_RecordsetPtr pRstList = NULL;
_bstr_t strCnn("Provider=Microsoft.JET.OLEDB.4.0;" "Data source = H:\\DATA.mdb;");
TESTHR(pdb.CreateInstance(__uuidof(Connection)));
TESTHR(pRstList.CreateInstance(__uuidof(Recordset)));
pdb->Mode = adModeShareExclusive;

char szCONNECT[] = "Provider=Microsoft.JET.OLEDB.4.0;Data source=DATA.mdb";

hfl = CreateFile(szTXTJSA,GENERIC_WRITE,0,0,CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, 0);
HRESULT hr = S_OK;

pRstList->Open("SELECT * FROM LIST",strCnn, adOpenDynamic,adLockBatchOptimistic,adCmdText);
try
{
printf("Jobnumber jobname Indexnumber Idcont Content \t \t box Idnote \t Note \n");
while(!pRstList->EndOfFile)
{
bst = pRstList->Fields->GetItem((long)0)->Value; // jobnumber
psz = bst;


// Les champs NULLABLES sont a prendre dans un:
// _variant_t var;
var = pRstList->Fields->GetItem((long)1)->Value;//jobname
if(var.vt != VT_NULL)
{
bst = var;
psz= bst;
}
else
{
psz = NULL;
}


bst = pRstList->Fields->GetItem((long)2)->Value; // indexnumber
psz = bst;


lval= pRstList->Fields->GetItem((long)3)->Value; // idcontent
bst = lval;
psz = bst;

bst = pRstList->Fields->GetItem((long)4)->Value; // content
psz = bst;
lval = pRstList->Fields->GetItem((long)5)->Value; // boxnumber
bst = lval;
psz = bst;

lval= pRstList->Fields->GetItem((long)6)->Value; // idnote
bst = lval;
psz = bst;

bst = pRstList->Fields->GetItem((long)7)->Value; // note
psz = bst;
// WriteFile(hfl, szbuff, psz - szbuff, &dwWrite, 0);

pRstList->MoveNext();
}
mercredi 25 août 2004 à 13:55:44 | Re : base d edonnee / probleme si un champs est vide

BruNews

Administrateur CodeS-SourceS
psz = bst; ???
Plonge toi dans un livre de C pour comprendre comment on ecrit dans un buffer.

ciao...
BruNews, Admin CS, MVP VC++


Cette discussion est classée dans : base, programme, vide, tt, jobname


Répondre à ce message

Sujets en rapport avec ce message

base de registre... [ par morgandetoi06 ] svp pouvez vous me donner la synyaxe EXACTE d une fonction pour ecrire une clef dans la base de registre dans HKEY_CURRENT_USER\SOFTWARE\Microsoft\Win base de donnee / ado / et liste chaine [ par callaghan1981 ] hello a ts..j ai un petit bleme..jarrive a me connecter a une base de donne, de consulter la baseet je desire now mettre tt les champs dune table ou r Trouver <mysql.h> [ par lolo007 ] Bonjour a tousDans le cadre d'un projet, je dois réaliser la lecture dans un automate grâce à un serveur OPC puis, ce que j'ai lue, je dois le mettre utlité des registres [ par glipper ] Bonjour,J'aimerais savoir dans quel genre de cas il est utile d'utiliser la base des registres. Peut-on creer des clés juste afin qu'elles contiennent Mysql avec C++ pour un Programme TROP puissant [ par anismemo2003 ] Salut a tous, je cherche à créer un application trés trés puissante, je m'explique. Cette application est basée sur une base de données qui rassemble Un débutant qui veut apprendre! [ par skunsky ] Bonjour à tous,Je voux explique mon probleme: Je voudrais creer un petit programme avec une interface graphique (faite avec c++ builder) qui me permet Creer son premier programme [ par andarius40 ] Bonjour, j'apprends a programmer en c++, j'aimerai creer une application pour gerer mes dvd et cd (il en existe deja beaucoup), mais cela me semble u Base de Donnée Local [ par Beuuun ] Youkoulélé a tous!Voila l'histoire, j'ai un programme a réalisé qui a pour but de gérer des clients et leurs devis/factures. Mais je ne sais pas comme builder et base de donné mysql [ par bilal ] bojour a tous,j'ai developpé un programme que je compte securisé via le net.tout fonctionne deja bien mais je veux amelioré la chose, pouor le moment


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales