14. september 2000 - 13:49Der er
13 kommentarer og 1 løsning
Sql
Hey
Jeg skal bruge en ting der kan læse en database i gennem og se om at det nummer som man er ved at tilføje er i den.
jeg har er paradox database men id <-- bliver brugt til noget på en hjemmme side (p key) varenummer <-- det er den den skal se om findes engang varenavn
men hvordan får jeg får jeg den til at se efter nå man op retter en nu vare i mit prog om der findes en anden post med samme varenummer
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
hvis du inden du opretter den (måske) nye post søger efter det nye varenummer kan du finde ud af om du skal inserte eller update:
Q.SQL.Add(\'SELECT * FROM Table_Name WHERE varenummer = :pVareNr\'); Q.PAramByName(\'pVareNr\').AsString := \'VARE001\'; Q.Open;
if Q.RecordCount = 0 then begin Q.Close; Q.SQL.Clear; Q.SQL.Add(\'INSERT INTO Table_Name.....\'); Q.ExecSQL; end else begin Q.Close; Q.SQL.Clear; Q.SQL.Add(\'UPDATE Table_Name SET... WHERE varenummer = :pVareNr\') Q.PAramByName(\'pVareNr\').AsString := \'VARE001\'; Q.ExecSQL; end;
Jeg synes faktisk at det er underligt at der ikke findes en sql cmd som selv gør det-der. Feks kunne insert jo godt lige tage en parameter som feks hed updateifexists. Måske et forslag til næste ersion (hvis den nogensnde kommer i en ANSI udgave:-)
er de 5 parametre (0-4) oprettet som parametre i TQuery komponenten (i params property) ?
og har de samme type som du har defineret ?
Hvis ja, så prøv at flytte de 5 params[x].as... linier op før sql.add linien
Hvor er det den siger \"type mismatch..\" ?
Prøv evt. med at sætte showmessage(\'1\'); (og 2, og 3 o.s.v.) ind som linier mellem de enkelte linier i koden. Så vil du kunne se hvad den sidste showmessage er inden du får fejlen.
Du kan med fordel køre Prepare inden du tilskriver dine params. også evt. bruge paramByName så er du sikker på at det er det rigtige param du har fat i og så skal du huske at hvis du tilskriver et parameter AsString tror Query\'en at det er en string og så skal der \'\' rundt om i SQL sætningen, så hvis varenummer er integer så konverter inden du tilskiver eller brug AsInteger, eller sæt Param.Datatype ( tilskrivning af datatype sletter indholdet at din param )
/Martin
PS. du kan også vælge at bygge dit SQL sætning op i en string i steddet for params.
well det med at den skal gemme dataen i databasen virker men den skal jo lige se efter om det varenummer er der en gang.
procedure Tnyvare.BitBtnWithColor1Click(Sender: TObject); begin main.Query1.SQL.Add(\'SELECT * FROM produkt WHERE varenummer = :pVareNr\'); main.Query1.PAramByName(\'pVareNr\').AsString := \'VARE001\'; main.Query1.open; if main.Query1.RecordCount = 0 then begin with main.Query1 do begin; close; SQL.Clear; SQL.Add(\'insert into produkt(varenummer, varenavn, pris, Lagerbeholdning, varebeskrivelse)VALUES(:varenummer, :varenavn, :pris, :lagerbeholdning, :varebeskrivelse)\'); Params[0].AsInteger := strtoint(nyvare.Edit1.Text); //varenummer Params[1].AsString := nyvare.Edit2.Text; //varenavn Params[2].AsString := nyvare.Edit3.Text; //pris Params[3].AsInteger := strtoint(nyvare.Edit4.Text); //Lagerbeholdning Params[4].AsString := nyvare.Memo1.Lines.Text; //varebeskrivelse ExecSQL; end; end else begin showmessage(\'Varenummer findes\'); end; main.lagerRxQuery.Close; main.lagerRxQuery.open; close; end;
tror det er i det her den melder fejl
main.Query1.SQL.Add(\'SELECT * FROM produkt WHERE varenummer = :pVareNr\'); main.Query1.PAramByName(\'pVareNr\').AsString := \'VARE001\'; main.Query1.open; if main.Query1.RecordCount = 0 then
well det er hele den code den udføre håber i kan hjælpe mig
det som er skrevet er et eksempel - erstat evt. pVareNr med en anden datatype - feks hvis vare typen er integer:
main.Query1.SQL.Add(\'SELECT * FROM produkt WHERE varenummer = :pVareNr\'); main.Query1.PAramByName(\'pVareNr\').AsInteger := 1;
desuden skal der \'er uden om :pVareNr hvis data typen er en streng: main.Query1.SQL.Add(\'SELECT * FROM produkt WHERE varenummer = \'\':pVareNr\'\'\');
Soory jeg havde helt glemt dette spm :) well er færdig med det projekt nu mange tak for hjælpen
<MB>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.