29. september 2003 - 10:18Der er
12 kommentarer og 2 løsninger
Flere-bruger system
Hej
Jeg har lavet et, synes jeg selv, rigtig godt bestillingssystem med kundebase m.m.
Nu er der selvfølelig kommet krav om at dette skal kunne bruges på flere arbejdsstationer samtidigt og det giver mig lidt kvaler.
Jeg er bekendt med J.Walkenbach´s funktion med at hente fra lukkede filer, men ved ikke om det i mit tilfælde er det bedste, derfor vil jeg hører om I havde nogle ideer og forslag.
Landet ligger sådan at jeg har en fil der hedder Lokal.xls som indeholder diverse numre (tilbudsnr., ordrenr.), diverse standard oplysninger o.m.a. disse ønsker jeg placeret centralt så alle brugere trækker på samme data og altid får det nyest tilbudsnr. + 1 osv.
Alle data hentes og skrives fra VBA-userforms.
Ville det være smart at lave en lokal fil al´s LokalLokal.xls som blot linker til Lokal.xls? Mht numre (tilbud, ordre etc.) er det ikke et problem - men hvad med kundebasen - den udvides jo hele tiden - linker jeg så bare hele arket til det andet ark eller???
Håber på nogle gode forslag - ønskes mere info så spørg løs.
Hvis du skal lave et egentligt flerbruger system, vil jeg foreslå, at du laver det i et databaseprogram i stedet for i Excel. Jeg tror problemerne med at "holde styr" på brugerne, "hvem opdaterer hvad hvornår", "hvilket nummer er det seneste", osv., vil blive for vanskelige atr holde styr på.
Havde jeg også overvejet - mener nu ikke det er numren der er det store problem - det er jo blot at ændre så snart en bruger opretter et nyt tilbud så hæves numret og dette er nu det seneste... hmmmmmm....
Vil lige vente og se om andre har nogle forslag - og begynder så lige at rode lidt med access som database... lyder jo egentlig også mere logisk... var bare så dejligt nemt at holde det hele i excel (tror jeg nok)...
For nu ikke at du skal lave for meget om, ville mit forslag nok være at placere kundedatabase samt hvad du har i Lokal.xls i en access-database og så læse/skrive i den fra Excel. På den måde er det muligt at flere bruger den på en gang og du kan beholde alt resten i Excel
Jeg kan sagtens linke mit ark til databasen (jeg vil helst bruge det ark jeg har nu for ikke at skulle til at ændre en masse VBA kode) og hente dataerne ind det fungerer perfekt - men hvordan skriver jeg lige data tilbage til Access - har ledt lidt her på eksperten - men så vidt jeg lige kan se går alle spørgsmål kun på at hente data fra Access - og ikke skrive tilbage til access..
Det med licenserne er jo bare perfekt - betyder det også at Access faktisk slet ikke behøver være installaeret? (det gør det vel?!)
For at skrive til access, skal du bruge lidt kode, men det er faktisk nemt. Et godt sted at starte er http://www.erlandsendata.no/english/ Se under ADO/DAO.
Bak - jeg har et par tillægsspørgsmål - er det okay?
Hvis jeg skal opdaterer en post - som jeg har ændret i excel - så skal jeg vel ikke overfører alle data fra excel til access - men kan vel nøjes med at opdaterer posten - kan du evt. give et eksemple på det...?
' Create the Command object we'll use for all three queries. Set objCommand = New ADODB.Command objCommand.ActiveConnection = szConnect
'**** INSERT a new record into the database ************** ' Load the SQL string into the Command object. objCommand.CommandText = "INSERT INTO Shippers(CompanyName, Phone) " & _ "VALUES('Air Carriers', '(205) 555-1212');" ' Execute the SQL statement. objCommand.Execute Recordsaffected:=lRecordsAffected, _ Options:=adCmdText Or adExecuteNoRecords ' Check for errors. Only one record should have been affected. If lRecordsAffected <> 1 Then Err.Raise Number:=vbObjectError + 1024, _ Description:="Error executing INSERT statement."
' Retrieve the primary key generated for our new record. objCommand.CommandText = "SELECT @@IDENTITY;" Set rsData = objCommand.Execute(Options:=adCmdText) ' Check for errors. The recordset should contain data. If rsData.EOF Then Err.Raise Number:=vbObjectError + 1024, _ Description:="Error retrieving primary key value." ' Store the primary key value for later use. lKey = rsData.Fields(0).Value rsData.Close
'**** UPDATE the record we just created ****************** ' Load the SQL string into the Command object. objCommand.CommandText = "UPDATE Shippers " & _ "SET Phone='(206) 546-0086' " & _ "WHERE ShipperID=" & CStr(lKey) & ";" ' Execute the SQL statement. objCommand.Execute Recordsaffected:=lRecordsAffected, _ Options:=adCmdText Or adExecuteNoRecords ' Check for errors. Only one record should have been affected. If lRecordsAffected <> 1 Then Err.Raise Number:=vbObjectError + 1024, _ Description:="Error executing UPDATE statement."
'**** DELETE our record from the database **************** ' Load the SQL string into the Command object. objCommand.CommandText = "DELETE FROM Shippers " & _ "WHERE ShipperID = " & CStr(lKey) & ";" ' Execute the SQL statement. objCommand.Execute Recordsaffected:=lRecordsAffected, _ Options:=adCmdText Or adExecuteNoRecords ' Check for errors. Only one record should have been affected. If lRecordsAffected <> 1 Then Err.Raise Number:=vbObjectError + 1024, _ Description:="Error executing DELETE statement."
ErrorExit:
' Destroy our ADO objects. Set objCommand = Nothing Set rsData = Nothing Exit Sub
ErrorHandler: MsgBox Err.Description, vbCritical Resume ErrorExit End Sub
Havde dog ikke den så jeg hakkede alt af med Active X og nu ville den..
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.