19. februar 2001 - 21:16Der er
16 kommentarer og 1 løsning
Lidt kringlet sql
Jeg har 2 tabeller
elementnumre, og type template.
ud fra de 2, skal jeg genere et grid med signalnummer og Elementnummer.Beskrivelse + TypeTemplate.Beskrivelse.
I elementnumre slår jeg værdien Nummer 23041111 og ser at det er typen 401, samt en beskrivelses tekst.
Når jeg slår op i min type tabel, består den (typen, her 401) altid af 8 cifre XXXXXXXX , de tal der er udfyldt med andet end X skal udfyldes af element nummerets samme plads, står der eks. 45X4XXXX, skal mit grid ende ud med 45041111 + den sammentrukne beskrivelse
Jeg håber det er forståligt, ellers skal jeg prøve at illustrere det...
Er det ikke bare at tildele en variabeler? og så lave et grid udfra dem ... Jeg har ikke en skid styr på left outa join osv. Jeg ville gøre det på den måde..
PS. Hvis du brugte VB kunne jeg give dig et eksempel
Specifiser \'Conection\' og \'ConnectionString\' for begge således at de tilgår de rigtige tabeller i din Access DB.
Sæt \'AutoCalcFields\' = False i TableElementnumre.
Hvis du i design vinduet DBKlikker på TableElementnumre får du en liste over tilgængelige felter (denne skulle helst være tom)
Højreklik på listen og vælg \'Add fields\' vælg derefter de felter som du ønsker at bruge dvs: Nummer, Typen og beskrivelse.
Højreklik igen på listen og vælg \'New field\' og sæt følgende : Name til \'Type_TemplateBeskrivelse\', Type og size til samme format som Type_Template.Beskrivelse, field type til \'Lookup\', Key Fields til Typen, (i TableElementnumre) Dataset til TableType_Template, Lookup Keys til Typen, (i TableType_Template) Result Field til Beskrivelse. (i TableType_Template)
!! Du har nu fået tilføjet et felt Type_TemplateBeskrivelse i TableElementnumre !!
Højreklik igen på listen og vælg \'New field\' og sæt følgende : Name til \'Type_TemplateNummer\', Type og size til samme format som Type_Template.Nummer, (8 cifre?) field type til \'Lookup\', Key Fields til Typen, (i TableElementnumre) Dataset til TableType_Template, Lookup Keys til Typen, (i TableType_Template) Result Field til Nummer. (i TableType_Template)
!! Du har nu fået tilføjet et felt Type_TemplateNummer i TableElementnumre !!
Højreklik igen på listen og vælg \'New field\' og sæt følgende : Name til \'Signalnummer\', Type og size til samme format som TableElementnumre.Nummer, field type til \'Calculated\'.
!! Du har nu fået tilføjet et felt Signalnummer i TableElementnumre og har nu følgende felter:
Nummer Typen beskrivelse Type_TemplateBeskrivelse Type_TemplateNummer Signalnummer
!! nu mangler vi bare at beregne resultatet i signalnummer !!
Luk felt listen ! Vælg TableElementnumre ! vælg Events ! DBKlik på OnCalcFields og indsæt følgende kode :
var TempString, TempString: String; i: Integer; begin OldString := Type_TemplateNummer.Text; i := Pos(\'X\',OldString); While i <> 0 do Begin TempString := Copy(Nummer,i,1); Delete(OldString,i,1); Insert(TempString,OldString,i); i := Pos(\'X\',OldString); end; TableElementnumreSignalnummer.text := OldString; end;
Overstående kode skulle erstatte samtlige \'X\'er i Type_TemplateNummer med en karakter på tilsvarende plads i Nummer og gemme resultatet i signalnummer :)
Desværre er det vidst kun Delphi 5 der har indbyggede mulighed for ADO med mindre man gør følgende:
tilføj ComObj til din uses clause. Der er en funktion kaldet CreateOleObject(objekt:string) som returnerer en Olevariant. Du angiver hvilket ADO objekt du vil bruge (d.v.s. der er ingen visuelle tabels til at hjælpe men du får fuld adgang til ADO). I store træk er det nu muligt at gøre som shanders siger du skal bare selv skrive koden der forbinder ADO objekterne med dine tabels (evt. TStringrid funker fint her).
Hvis du har problemer så tjek den gode side www.delphizine.com og søg på ADO (½ af artiklerne handler om D5, men der er to som fortæller om hvordan du bruger ADO i f.eks. D3). Ellers så tjek www.microsoft.com/data for både at hente nyeste udgave af ADO (i pakken MDAC). Der er inkluderet en rigtig god hjælp med ADO og du kan ellers tjekke stort set alle hjemmesider der handler om Active Server Pages - fremgangsmåden til at bruge ADO der er næsten det samme som her.
Okay, nu forstår jeg sammenhængen da jeg er i Delphi 4, men nu synes jeg, det er ved at være ude i noget, jeg ikke ønsker at rode med PT.
Det må kunne laves i D4, med en sql. Da jeg også ønsker at lave ligende ting i fremtiden, altså med at join\'e og bruge AS.
Men kan jeg ikke bare oprette et ekstra felt på min TTable, og så bruge OnCalcFields, til at hente de rigtige ting ud af mine andre kolonner - og fylde ind i min definerede det skal IHF prøves...
Fandt løsningen, og lavede selecten direkte på qry, og så valgte ud med Params
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.